批改状态:合格
老师批语:
支持文件上传的表单,两个必须的参数
2.1 method:POST,POST请求,
2.2 ecntype: multipart/form-data,原始的原件流上传
错误处理
3.1 isset():判断某个数组中是否存在某个键,返回布尔值
3.2 通过error返回值进行响应的错误处理
3.2.1 error=1:大小超过了php.ini中的允许上传的文件大小
3.2.2 error=2:大小超过了表单中(MAX_FILE_SIZE)的允许上传的文件大小
3.2.3 error=3:文件只有部分被上传
3.2.4 error=4:没有文件上传
3.2.5 error=6:找不到临时目录
3.2.6 error=7:文件写入失败,请检查目录权限
3.2.7 error=0:0=>UPLOAD_EER_OK,表示上传成功
3.3 is_uploaded_file:判断是上传方式是否为post;
3.4 pathinfo()[‘extension’]:提取文件名的扩展名,用于判断格式,是否符合需求
3.5 in_array():判断字符串(扩展名)是否在某一个数组中(白名单);
3.6 md5():文件名加密,避免同名文件上传异常
3.7 move_uploaded_file():将临时文件移动到目标目录中,两个目录均需要具体到文件名
单个文件上传,一个type=file的input即可,name属性为超全局变量$_FILES的键;
案例源码
<?phpprintf('<pre>%s</pre>',print_r($_FILES,true));if (isset($_FILES['my_test'])){foreach($_FILES['my_test']['error'] as $key=>$error){$name = $_FILES['my_test']['name'][$key];$tmpname = $_FILES['my_test']['tmp_name'][$key];switch($error){case 0:if (is_uploaded_file($tmpname)){$allow=['jpg','jpeg','png','gif'];$exname=pathinfo($name)['extension'];if(in_array($exname,$allow)){$depath = 'pic/'.md5($name).'.'.$exname;if(move_uploaded_file($tmpname,$depath)){echo '<p>上传成功</p>';echo "<img src='$depath' width='50'>";}else{}}else{echo '<p>文件类型错误</p>';}}else{echo '<p>非POST请求</p>';}break;case 1:echo '大小超过了php.ini中的允许上传的文件大小';break;case 2:echo '大小超过了表单中(MAX_FILE_SIZE)的允许上传的文件大小';break;case 3:echo '文件只有部分被上传';break;case 4:echo '没有文件被上传';break;case 6:echo '找不到临时目录';break;case 7:echo '文件写入失败,请检查目录权限';break;}}}?><!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>文件上传的表单</title></head><body><form action="" method="POST" enctype="multipart/form-data"><fieldset><legend>文件上传</legend><!-- 限制上传文件大小的,单位是字节,type类型为hidden,name属性为MAX_FILE_SIZE; --><!-- <input type="hidden" name="MAX_FILE_SIZE" value="800000"> --><!-- 多文件上传 --><input type="file" name="my_test[]" multiple><!-- 单文件上传 --><!-- <input type="file" name="my_test" > --><button>上传</button></fieldset></form></body></html>
案例结果
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号