首页 > 建站教程 > PHP教程 >  PHP上传文件代码实例正文

PHP上传文件代码实例

一个简单的PHP文件上传源码,提供详细注释:

第一步,创建上传文件的html页面——upload.html:
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
注意:
上传文件,form的enctype="multipart/form-data"属性必须写上。
<input>标签的 type="file" 属性为上传文件控件。

第二部,创建上传文件处理脚本——upload_file.php,限制上传文件的类型,保存文件到upload.php:
if ($_FILES["file"]["error"] > 0){ ?>
<?php
/*
通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。
 第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或"error"。就像这样:
 · $_FILES["file"]["name"] - 被上传文件的名称 
 · $_FILES["file"]["type"] - 被上传文件的类型 
 · $_FILES["file"]["size"] - 被上传文件的大小,以字节计 
 · $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称 
 · $_FILES["file"]["error"] - 由文件上传导致的错误代码
*/
/*
下面的代码对上传的文件进行类型和大小的判断,限制用户只能上传尺寸小于2M的图片。
注意:jpeg和pjpeg是火狐和IE对jpg的不同“理解”。对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。
*/
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 "上传发生错误: " . $_FILES["file"]["error"] . "<br />";
}
else
{
/*
输出上传文件的信息。
*/
echo "文件上传成功!<br>";
echo "文件名: " . $_FILES["file"]["name"] . "<br />";
echo "类型: " . $_FILES["file"]["type"] . "<br />";
echo "大小: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "文件缓存地址: " . $_FILES["file"]["tmp_name"] . "<br />";
/*
判断上传文件是否已经存在,存在就输出提示,不存在就从缓存中复制到upload。
注:PHP 临时文件夹创建了一个被上传文件的临时副本。这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:
*/
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . "已经存在!";
}
else
{
/*
用move_uploaded_file()函数移动上传的文件到upload文件夹
*/
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "文件存储成功,保存在: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "文件上传失败!";
}
?>