优化后的单文件上传函数
发表于:2024-11-30 作者:热门IT资讯网编辑
编辑最后更新 2024年11月30日,$fileInfo = @$_FILES ['myFile'];//接收表单上传的文件//5个参数中,第一个是必须,后面都有默认值upload($fileInfo,"626800",false,"im
$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(getp_w_picpathsize($fileInfo['tmp_name']));exit; // 判断是否是真实的图片文件类型,如果不需要做此检测可以设定$flag为false if ($flag) { if (! getp_w_picpathsize ( $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 "文件上传成功!";}