优化后的单文件上传函数
$fileInfo = @$_FILES [‘myFile‘];//接收表单上传的文件 //5个参数中,第一个是必须,后面都有默认值 upload($fileInfo,"626800",false,"imgs",array("txt")); function upload($fileInfo,$maxSize=2097152,$flag=true,$path="upload",$allowedExt=array("jpeg","jpg","png","gif")) { //$maxSize = 2 * 1024 * 1024; // 上传文件大小限制在2M内 //$flag = true; // 判断错误号 if ($fileInfo [‘error‘] > 0) { switch ($fileInfo [‘error‘]) { case 1 : $mes = ‘上传文件超过了PHP配置文件中upload_max_filesize选项的值‘; break; case 2 : $mes = ‘上传文件超过了表单MAX_FILE_SIZE限制的大小‘; break; case 3 : $mes = ‘文件部分被上传‘; break; case 4 : $mes = ‘没有选择要上传的文件‘; break; case 6 : $mes = ‘没有找到临时目录‘; break; case 7 : case 8 : $mes = ‘系统错误‘; break; } exit ( $mes ); } // 判断文件类型 // $ext=strtolower(end(explode(".", $fileInfo[‘name‘]))); //得到后缀名,或者用下面的方法 $ext = pathinfo ( $fileInfo [‘name‘], PATHINFO_EXTENSION ); // $allowedExt = array ( // "jpeg", // "jpg", // "png", // "gif" // ); // if(!is_array($allowedExt)){ exit("文件扩展名不是数组"); } if (! in_array ( $ext, $allowedExt )) { exit ( "非法文件类型" ); } // print_r(getimagesize($fileInfo[‘tmp_name‘]));exit; // 判断是否是真实的图片文件类型,如果不需要做此检测可以设定$flag为false if ($flag) { if (! getimagesize ( $fileInfo [‘tmp_name‘] )) { exit ( "上传文件不是真实的图片文件" ); } } // 判断文件大小 if ($fileInfo [‘size‘] > $maxSize) { exit ( "上传文件大小超过本站限制" ); } // 是否是通过POST方式上传,需要检测的是临时文件 // var_dump(is_uploaded_file($fileInfo[‘tmp_name‘]));exit; if (! is_uploaded_file ( $fileInfo [‘tmp_name‘] )) { exit ( "非法上传方式" ); } // 检测完毕后移动文件 //$path = "upload"; if (! file_exists ( $path )) { mkdir ( $path, 0755, true ); chmod ( $path, 0755 ); } $uniqName=md5 ( uniqid ( microtime ( true ), true ) ) . "." . $ext; $destination = $path . "/" . $uniqName; if (! @move_uploaded_file ( $fileInfo [‘tmp_name‘], $destination )) { // 加上@ 是为了不显示溢出错误 exit ( "文件上传失败" ); } echo "文件上传成功!"; }
本文出自 “方向感” 博客,请务必保留此出处http://itech.blog.51cto.com/192113/1606734
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。