<?php header("Content-type:text/html;charset=utf-8"); //print_r($_FILES); $name=$_FILES['up']['name']; $type=$_FILES['up']['type']; $size=$_FILES['up']['size']; $tmp=$_FILES['up']['tmp_name']; $error=$_FILES['up']['error']; if($error==UPLOAD_ERR_OK){ if(move_uploaded_file($tmp,'uploads/'.$name)){ echo"文上传成功"; }else{ echo "文件上传失败"; } }else{ switch($error){ case 1: echo"上传的文件超过了最大值"; break; case 2: echo"上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。"; break; case 3: echo"文件只有部分被上传。"; break; case 4: echo"没有文件被上传。"; break; case 6: echo"找不到临时文件夹。"; break; case 7: echo"文件写入失败。"; break; } } ?>
为什么我就是匹配不到错误信息呢,上传失败不显示任何错误信息,只是提示“上传失败”,跟我的环境有关吗,MAC下的MAMP PRO。用老师的原版代码也是一样的结果,我根本获取不到$_FILES[MYFORM]中的['error']的值,直接print_r这个值都不显示,什么原因?
发一下upload.php
如果你确定只提示“上传失败",从你的代码逻辑看,可以确定你实质上传文件到服务器是成功。只不过使用move_uploaded_file($tmp,'uploads/'.$name),进行服务器临时文件复制移动时没有成功。因此,请确定两点:
上传文件所在的路径是否正确
你所上传的文件名是否非英文,若非英文请在进行move_uploaded_file()之前,将新文件名(即$name)进行操作系统所使用相应编码转换。