- 在我们完善一个网站的时候,会遇到上传头像、文档、压缩文件等等问题,html中用表单的 input:type="file"来把文件信息传递给后台都是众所周知的。
- 那么在后台应该怎么处理呢?
- php在处理交互方面有天然的优势,自然有强大的函数来处理“上传文件”。
1.服务器端php.ini文件配置:
2.html的form表单:
<form action="doAction.php" method="post" enctype="multipart/form-data">
请选择文件:
<input type="file" name="myFile"><br>
<input type="submit" value="上传文件">
</form>
注意:1)表单必须为post方式提交;
2)form中必须有 enctype="multipart/form-data" 属性
3.在doAction.php中先打印上传文件信息:
//$_FILES:文件上传变量
print_r($_FILES);
exit();
网页信息:
其中,myFile是form表单中input="file"的name属性的值。
解释:[name]:上传文件的原文件名;
[type]:上传文件的属性;
[tmp_name]:上传文件的临时保存目录及临时保存文件名;
[error]:上传错误信息;
[size]:上传文件大小。
[error]错误信息说明:
4.doAction.php:
<?php
header("content-type:text/html;charset:utf-8");//头信息
//1.通过$_FILES文件上传变量接收上传文件信息
$fileInfo = $_FILES['myFile'];
$filename = $fileInfo['name'];
$type = $fileInfo['type'];
$tmp_name = $fileInfo['tmp_name'];
$size = $fileInfo['size'];
$error = $fileInfo['error'];
//2.判断错误号,只有为0或者是UPLOAD_ERR_OK,没有错误发生,上传成功
if($error === UPLOAD_ERR_OK){
//上传成功将服务器上的临时文件移动到指定目录下(两种方式)
//move_uploaded_file($tmp_name,$destination):将服务器上的临时文件移动到指定目录下。成功返回true,否则返回false
//copy($src,$dst):将文件拷贝到指定目录,拷贝成功返回true,否则返回false
if(move_uploaded_file($tmp_name,"uploads/".$filename)){
echo "文件".$filename."上传成功";
}else{
echo "文件".$filename."上传失败";
}
}else{
//匹配错误信息
switch($error){
case 1:
echo '上传文件超过了php配置文件中upload_max_filesize选项的值';
break;
case 2:
echo '超过了表单MAX_FILE_SIZE限制的大小';
break;
case 3:
echo '文件部分被上传';
break;
case 4:
echo '没有选择上传文件';
break;
case 6:
echo '没有找到临时目录';
break;
case 7:
case 8:
echo '系统错误';
break;
}
}
转自博主PHP中文网博客 —— 吾生也有涯,而知也无涯