配色: 字号:
PHP 文件上传
2016-08-20 | 阅:  转:  |  分享 
  






";

while($row=mysql_fetch_array($result))

{

echo"";

echo"";

echo"";

echo"";

}

echo"
PHP文件上传

PHP文件创建/写入

PHPCookies

通过PHP,可以把文件上传到服务器。

创建一个文件上传表单

允许用户从表单上传文件是非常有用的。

请看下面这个供上传文件的HTML表单:








enctype="multipart/form-data">

Filename:
















请留意如下有关此表单的信息:

标签的enctype属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用"multipart/form-data"。

标签的type="file"属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。

注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。

创建上传脚本

"upload_file.php"文件含有供上传文件的代码:


if($_FILES["file"]["error"]>0)

{

echo"Error:".$_FILES["file"]["error"]."
";

}

else

{

echo"Upload:".$_FILES["file"]["name"]."
";

echo"Type:".$_FILES["file"]["type"]."
";

echo"Size:".($_FILES["file"]["size"]/1024)."Kb
";

echo"Storedin:".$_FILES["file"]["tmp_name"];

}

?>

通过使用PHP的全局数组$_FILES,你可以从客户计算机向远程服务器上传文件。

第一个参数是表单的inputname,第二个下标可以是"name","type","size","tmp_name"或"error"。就像这样:

$_FILES["file"]["name"]-被上传文件的名称

$_FILES["file"]["type"]-被上传文件的类型

$_FILES["file"]["size"]-被上传文件的大小,以字节计

$_FILES["file"]["tmp_name"]-存储在服务器的文件的临时副本的名称

$_FILES["file"]["error"]-由文件上传导致的错误代码

这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。

上传限制

在这个脚本中,我们增加了对文件上传的限制。用户只能上传.gif或.jpeg文件,文件大小必须小于20kb:




if((($_FILES["file"]["type"]=="image/gif")

||($_FILES["file"]["type"]=="image/jpeg")

||($_FILES["file"]["type"]=="image/pjpeg"))

&&($_FILES["file"]["size"]<20000))

{

if($_FILES["file"]["error"]>0)

{

echo"Error:".$_FILES["file"]["error"]."
";

}

else

{

echo"Upload:".$_FILES["file"]["name"]."
";

echo"Type:".$_FILES["file"]["type"]."
";

echo"Size:".($_FILES["file"]["size"]/1024)."Kb
";

echo"Storedin:".$_FILES["file"]["tmp_name"];

}

}

else

{

echo"Invalidfile";

}



?>

注释:对于IE,识别jpg文件的类型必须是pjpeg,对于FireFox,必须是jpeg。

保存被上传的文件

上面的例子在服务器的PHP临时文件夹创建了一个被上传文件的临时副本。

这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:


if((($_FILES["file"]["type"]=="image/gif")

||($_FILES["file"]["type"]=="image/jpeg")

||($_FILES["file"]["type"]=="image/pjpeg"))

&&($_FILES["file"]["size"]<20000))

{

if($_FILES["file"]["error"]>0)

echo"ReturnCode:".$_FILES["file"]["error"]."
";

else

echo"Upload:".$_FILES["file"]["name"]."
";

echo"Type:".$_FILES["file"]["type"]."
";

echo"Size:".($_FILES["file"]["size"]/1024)."Kb
";

echo"Tempfile:".$www.wang027.com_FILES["file"]["tmp_name"]."
";

if(file_exists("upload/".$_FILES["file"]["name"]))"
";

echo$_FILES["file"]["name"]."alreadyexists.";

else

move_uploaded_file($_FILES["file"]["tmp_name"],

"upload/".$_FILES["file"]["name"]);

echo"Storedin:"."upload/".$_FILES["file"]["name"];

else

echo"Invalidfile";

?>

面的例子选取存储在"Persons"表中的所有数据(字符选取表中所有数据):


$con=mysql_connect("localhost","peter","abc123");

if(!$con)

die(''Couldnotconnect:''.mysql_error());

mysql_select_db("my_db",$con);

$result=mysql_query("SELECTFROMPersons");

while($row=mysql_fetch_array($result))

{

echo$row[''FirstName'']."".$row[''LastName''];

echo"
";

}



mysql_close($con);

?>

上面这个例子在$result变量中存放由mysql_query()函数返回的数据。接下来,我们使用mysql_fetch_array()函数以数组的形式从记录集返回第一行。每个随后对mysql_fetch_array()函数的调用都会返回记录集中的下一行。whileloop语句会循环记录集中的所有记录。为了输出每行的值,我们使用了PHP的$row变量($row[''FirstName'']和$row[''LastName''])。

以上代码的输出:

PeterGriffin

GlennQuagmire

在HTML表格中显示结果

下面的例子选取的数据与上面的例子相同,但是将把数据显示在一个HTML表格中:


$con=mysql_connect("localhost","peter","abc123");

if(!$con)

die(''Couldnotconnect:''.mysql_error());

mysql_select_db("my_db",$con);

$result=mysql_query("SELECTFROMPersons");

echo"

FirstnameLastname
".$row[''FirstName'']."".$row[''LastName'']."
";



mysql_close($con);

?>

献花(0)
+1
(本文系thedust79首藏)
类似文章 更多
发表评论: