批改状态:合格
老师批语:
<?phpnamespace _0818;// 上传文件步骤// 1、判断文件是否上传 (上传了不一定上传成功)// 2、判断文件 上传了是否成功(检测上传失败的原因)// 3、上传成功,判断文件上传方式是否合法// 4、上传方式合法,判断 是否允许上传的文件类型// 5、上传文件类型合法,合法,开始移动文件路径 (从临时文件路径移动到 指定文件路径)// 6、上传移动路径成功,上传成功// 7、预览测试// printf('<pre>%s</pre>',print_r($_FILES,true));// 判断文件是否上传成功// isset 判断某个变量是否存在if (isset($_FILES['my_pic'])) {// 当存在执行、、、// 原始文件名$name = $_FILES['my_pic']['name'];echo $name.'<hr>';// 临时文件名$tmpName = $_FILES['my_pic']['tmp_name'];echo $tmpName.'<hr>';// 错误代码$error = $_FILES['my_pic']['error'];echo $error.'<hr>';// error 是判断是否上传成功的关键。 不同的值代表不同的意思if ($error>0) {// echo '上传失败';// }else{// echo '上传成功,进行系一部操作';// }$tips = '<span style="color:red">上传失败!</span><br>';switch($error) {case 1:// echo '大小超过了配置文件 php.ini 允许上传的文件大小';// 拼接$tips .= '大小超过了配置文件 php.ini 允许上传的文件大小';break;case 2:// echo '大小超过了表单(name="MAX_FILE_SIZE" 值)允许上传的文件大小';$tips .= '大小超过了表单(name="MAX_FILE_SIZE" 值)允许上传的文件大小';break;}echo "<p>$tips</p>";}else{// 1、判断上传方式是否合法 方法是否为 postif(is_uploaded_file($tmpName)) {// 2、文件类型白名单$allow = ['jpg','jpeg','png','gif'];// 获取文件扩展名// print_r(pathinfo('66988b4bc84a60da7e21c8e50e7e32d7.jpg')) ;$ext = pathinfo($name)['extension'];//in_array(要查询的值,对比数组) 判断值是否存在if(in_array($ext,$allow)){// 如果上传方式合法,且是允许的类型则可以移动到指定的目标目录// 设置指定路径$path = 'uploads/';// 为了防止 同名覆盖 ,应该给 目标文件名重命名$dest = $path.md5($name).rand(1,100).'.'.$ext;// 移动 ,将文件从临时目录 移动到指定目标目录if(move_uploaded_file($tmpName,$dest)){echo '上传移动成功,上传成功';// 上传预览echo "<img src ='$dest' width='500'>";}else {echo '上传移动失败';}}else{echo '文件类型错误';}}else{echo '上传方法错误';}}// if (isset($_FILES['my_pic'])) {// // 原始文件名// $name = $_FILES['my_pic']['name'];// // 临时文件名// $tmpName = $_FILES['my_pic']['tmp_name'];// // 错误代码// $error = $_FILES['my_pic']['error'];// if ($error >0) {// $tips = '<span style="color:red">上传失败!</span><br>';// switch ($error) {// case 1:// $tips .= '大小超过了php.ini中的允许上传的文件大小';// break;// case 2:// $tips .= '大小超过了表单中(MAX_FILE_SIZE)的允许上传的文件大小';// break;// case 3:// $tips .= '文件只有部分被上传';// break;// case 4:// $tips .= '没有文件被上传';// break;// case 6:// $tips .= '找不到临时目录';// break;// case 7:// $tips .= '文件写入失败,请检查目录权限';// break;// }// echo "<p>$tips</p>";// } else {// //1 判断上传方式是否合法? POST// if (is_uploaded_file($tmpName)) {// // 文件类型白名单// $allow = ['jpg','jpeg','png','gif'];// // 扩展名// $ext = pathinfo($name)['extension'];// if (in_array($ext, $allow)) {// // 如果上传方式合法,且是允许的类型,则可以移动到指定的目录中了// $path = 'uploads/';// // 为了防止同名覆盖,应该给目标文件名重命名// $dest =$path. md5($name) . '.' . $ext;// // 将文件从临时目录移动到目标目录中// if (move_uploaded_file($tmpName, $dest)) {// echo '<p>上传成功</p>';// // 预览// echo "<img src='$dest' width='300'>";// } else {// }// } else {// echo '<p>文件类型错误</p>';// }// } else {// echo '<p>上传方式非法</p>';// }// }}?><!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><!-- 超全局的 遍历 数组 $FILES --></head><body><!-- 上传表单必有的2个属性1、上传方法 method :post2、 enctype :换成 multipart/form-data ,默认的数组需修改--><form action="" method="POST" enctype="multipart/form-data"><!-- 表单域 ---先来单文件上传--><fieldset><legend>单文件上传</legend><!-- name 命名与后端代码相关联 ,给服务器 编程语言用的变量名,$_FILES注意 使用蛇形命名 --><!-- 限制文件上传的大小 防君子不防小人type 类型 从text 变为 hideen 不让看到 .看不到不是禁用display 哦value 值 是以字节计算的哦--><input type="hidden" name="MAX_FILE_SIZE" value="80000000"><input type="file" name="my_pic"><button>上传</button></fieldset></form></body></html>
<?phpnamespace _0818;// 简约版 麻烦的也行 参照单文件进行多层校验 。printf('<pre>%s</pre>',print_r($_FILES,true));foreach($_FILES as $file){// 只要判断$file['error'] === 0 表示上传成功if ($file['error'] ===0) {// 暂不加密目标文件名$dest = 'uploads/' . $file['name'];// 移动到目标目录中move_uploaded_file($file['tmp_name'], $dest) ;// 预览echo "<img src='$dest' width='200'>";}};?><!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><!-- 超全局的 遍历 数组 $FILES --></head><body><!-- 上传表单必有的2个属性1、上传方法 method :post2、 enctype :换成 multipart/form-data ,默认的数组需修改--><form action="" method="POST" enctype="multipart/form-data"><!-- 表单域 --><fieldset><legend>多文件上传-逐个上传</legend><input type="file" name="my_pic1"><br><input type="file" name="my_pic2"><br><input type="file" name="my_pic"><br><button>上传</button></fieldset></form></body></html>
<?phpnamespace _0818;// 简约版 麻烦的也行 参照单文件进行多层校验 。printf('<pre>%s</pre>',print_r($_FILES,true));// 必须校验 my_pic 是否存在 否则不能执行if (isset($_FILES['my_pic'])) {foreach ($_FILES['my_pic']['error'] as$key=>$error) {// 0 =》可以换成 UPLOAD_ERR_OKif ($error ===0) {// 临时文件名称$tmpName= $_FILES['my_pic']['tmp_name'][$key];// 原始文件名称$name= $_FILES['my_pic']['name'][$key];// 暂不加密的目标文件名称$dest = 'uploads/' . $name;// 移动到目标目录中move_uploaded_file($tmpName, $dest) ;// 预览echo "<img src='$dest' width='200'>";}};}?><!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>支持文件上传的表单-多文件表单-逐个上传-2</title><!-- 超全局的 遍历 数组 $FILES --></head><body><!-- 上传表单必有的2个属性1、上传方法 method :post2、 enctype :换成 multipart/form-data ,默认的数组需修改--><form action="" method="POST" enctype="multipart/form-data"><!-- 表单域 --><fieldset><legend>多文件上传-逐个上传-2</legend><input type="file" name="my_pic[]"><br><input type="file" name="my_pic[]"><br><input type="file" name="my_pic[]"><br><button>上传</button></fieldset></form></body></html>
<?phpnamespace _0818;// 简约版 麻烦的也行 参照单文件进行多层校验 。printf('<pre>%s</pre>',print_r($_FILES,true));// 必须校验 my_pic 是否存在 否则不能执行if (isset($_FILES['my_pic'])) {foreach ($_FILES['my_pic']['error'] as$key=>$error) {// 0 =》可以换成 UPLOAD_ERR_OKif ($error ===0) {// 临时文件名称$tmpName= $_FILES['my_pic']['tmp_name'][$key];// 原始文件名称$name= $_FILES['my_pic']['name'][$key];// 暂不加密的目标文件名称$dest = 'uploads/' . $name;// 移动到目标目录中move_uploaded_file($tmpName, $dest) ;// 预览echo "<img src='$dest' width='200'>";}};}?><!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>支持文件上传的表单-多文件表单-按住ctrl一起批量上传-2</title><!-- 超全局的 遍历 数组 $FILES --></head><body><!-- 上传表单必有的2个属性1、上传方法 method :post2、 enctype :换成 multipart/form-data ,默认的数组需修改--><form action="" method="POST" enctype="multipart/form-data"><!-- 表单域 --><fieldset><legend>多文件上传-按住ctrl一起批量上传</legend><!-- 增加一个属性 multipe 允许同时选择多个--><!-- 与demo3.php相比,只改了二个地方 --><!-- 1. 只保留一个my_pic[] --><!-- 2. 加一个 multiple 属性,支持多选 --><!-- php处理上传的代码和zuoye3.php完全一样,不用动 --><input type="file" name="my_pic[]" multiple><button>上传</button></fieldset></form></body></html>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号