⼀个完整的php上传功能完整代码(upload代码)创建⼀个⽂件上传表单
允许⽤户从表单上传⽂件是⾮常有⽤的。
创建上传脚本
"upload_file.php" ⽂件含有供上传⽂件的代码:
<?php
if ($_FILES["file"]["error"] > 0)
{
echo "错误:" . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "上传⽂件名: " . $_FILES["file"]["name"] . "<br>";
echo "⽂件类型: " . $_FILES["file"]["type"] . "<br>";
echo "⽂件⼤⼩: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "⽂件临时存储的位置: " . $_FILES["file"]["tmp_name"];
}
?>
通过使⽤ 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"] - 由⽂件上传导致的错误代码
这是⼀种⾮常简单⽂件上传⽅式。基于安全⽅⾯的考虑,您应当增加有关允许哪些⽤户上传⽂件的限制。
上传限制
在这个脚本中,我们增加了对⽂件上传的限制。⽤户只能上传 .gif、.jpeg、.jpg、.png ⽂件,⽂件⼤⼩必须⼩于 200 kB:<?phpinputtypefile不上传文件
// 允许上传的图⽚后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);        // 获取⽂件后缀名
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800)    // ⼩于 200 kb
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "错误:: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "上传⽂件名: " . $_FILES["file"]["name"] . "<br>";
echo "⽂件类型: " . $_FILES["file"]["type"] . "<br>";
echo "⽂件⼤⼩: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "⽂件临时存储的位置: " . $_FILES["file"]["tmp_name"];
}
}
else
{
echo "⾮法的⽂件格式";
}
?>
请看下⾯这个供上传⽂件的 HTML 表单:
<html>
<head>
<meta charset="utf-8">
<title>玖芯科技(www.ninexin)</title>
</head>
<body>
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">⽂件名:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="提交">
</form>
</body>
</html>
将以上代码保存到 form.html ⽂件中。
有关上⾯的 HTML 表单的⼀些注意项列举如下:
<form> 标签的 enctype 属性规定了在提交表单时要使⽤哪种内容类型。在表单需要⼆进制数据时,⽐如⽂件内容,请使⽤
"multipart/form-data"。
<input> 标签的 type="file" 属性规定了应该把输⼊作为⽂件来处理。举例来说,当在浏览器中预览时,会看到输⼊框旁边有⼀个浏览按钮。
注释:允许⽤户上传⽂件是⼀个巨⼤的安全风险。请仅仅允许可信的⽤户执⾏⽂件上传操作。
保存被上传的⽂件
上⾯的实例在服务器的 PHP 临时⽂件夹中创建了⼀个被上传⽂件的临时副本。
这个临时的副本⽂件会在脚本结束时消失。要保存被上传的⽂件,我们需要把它拷贝到另外的位置:
<?php
// 允许上传的图⽚后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
echo $_FILES["file"]["size"];
$extension = end($temp);    // 获取⽂件后缀名
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800)  // ⼩于 200 kb
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "错误:: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "上传⽂件名: " . $_FILES["file"]["name"] . "<br>";
echo "⽂件类型: " . $_FILES["file"]["type"] . "<br>";
echo "⽂件⼤⼩: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "⽂件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";
// 判断当期⽬录下的 upload ⽬录是否存在该⽂件
// 如果没有 upload ⽬录,你需要创建它,upload ⽬录权限为 777
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " ⽂件已经存在。 ";
}
else
{
// 如果 upload ⽬录不存在该⽂件则将⽂件上传到 upload ⽬录下
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
echo "⽂件存储在: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "⾮法的⽂件格式";
}
?>
上⾯的脚本检测了⽂件是否已存在,如果不存在,则把⽂件拷贝到名为 "upload" 的⽬录下。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。