PHP-文件上传

作者:二三   2019-01-01 22:52:19   1022
  • 在我们完善一个网站的时候,会遇到上传头像、文档、压缩文件等等问题,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中文网博客 —— 吾生也有涯,而知也无涯

热门文章 关于前台使用ajax后台使用PhpSpreadsheet从数据库导出excel 对于Laravel Blade模板转义html标签的记录 PHP-文件上传 去除隐藏字符—— PHP-验证码制作
评论成功!
评论内容不能为空

tips:仅支持jpg,jpeg,png格式图片。