@[TOC](PHP文件上传)
创建用户上传表单
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="fileload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" id ="file"/>
<input type="submit" value="load"/>
</form>
</body>
</html>
form的enctype属性
值 | 描述 |
---|---|
application/x-www-form-urlencoded | 在发送表单前编码所有字符(默认情况) |
multipart/form-data | 不对字符进行编码,需要二进制数据时,如文件、图片时使用该值 |
text/plain | 不对特殊字符编码 |
上传文件信息
名称 | 描述 |
---|---|
$_FILES["file"]["name"] | 上传文件的名称 |
$_FILES["file"]["type"] | 上传文件的类型 |
$_FILES["file"]["size"] | 上传文件的大小 |
$_FILES["file"]["tmp_name"] | 存储在服务器的文件的临时副本名称 |
$_FILES["file"]["error"] | 文件上传导致的错误代码 |
<?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"]."Byte" ."<br>";
echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
?>
文件上传及其限制
<?php
//允许上传的文件后缀名
$allowedExts = array("docx","txt","pdf");
$temp = explode(".", $_FILES["file"]["name"]);
echo ($_FILES["file"]["size"])/1024," kb"."<br>";//输出文件大小kb
$Suffiex = end($temp); // 获取文件后缀名
if (($_FILES["file"]["type"] == "application/pdf")//判断上传文件类型
&& ($_FILES["file"]["size"] < 1024*1024*20) // 小于 20Mb
&& in_array($Suffiex, $allowedExts))//判断后缀是否在允许的集合中
{
// 判断当前目录下的 upload 目录是否存在该文件
if (file_exists("upload/".$_FILES["file"]["name"]))
{
echo "文件已存在";
}
else
{
// 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]);
echo "文件存在: " . "upload/" . $_FILES["file"]["name"];
}
}
else
{
echo "错误的文件格式";
}
?>
1.文件上传的类型:
文件类型 | 文件后缀 |
---|---|
image/…… | gif,bmp,jpg,png |
application/…… | octet-stream,pdf,msword,vnd.ms-excel,vnd.ms-powerpoint |
text/…… | txt,html |
2. 文件操作语句:
-
file_exists(path)
返回bool值,判断文件是否存在。
eg:file_exists("upload/".$_FILES["file"]["name"])
-
move_uploaded_file(file,newloc)
将文件移动到指定地址。
eg:
move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]);
参考: