后端PHP, 封装文件上传函数
<?php /* * 文件上传函数 */ function upload_single($file, $allow_type, $path, &$error, $allow_format=array(), $max_size=2000000){ //判断文件是否有效 if(!(is_array($file)&&isset($file["error"]))){ $error="上传文件无效"; return false; } //判断保存路径是否有效 if(!is_dir($path)){ $error="路径错误!"; return false; } //判断文件上传过程中是都出错 switch ($file["error"]){ case 1: case 2: $error="文件超出服务器应许大小"; return false; case 3: $error="文件只上传部分"; return false; case 6: case 7: $error="文件保存失败"; return false; } //判断mime类型 if(!in_array($file["type"], $allow_type)){ print_r($file["type"]."<->".$allow_type); $error="当前文件不允许上传12"; return false; } //判断后缀名是否正确 $ext=ltrim(strrchr($file["name"],"."), "."); if(!in_array($ext, $allow_format)&&!empty($allow_format)){ $error="上传文件是不允许上传的后缀名"; return false; } //判断当前文字是否满足这个函数的最大上传值 if($file["size"]>$max_size){ $error="上传文件过大"; return false; } //构建名字:随机构造 $full_name=strstr($file["type"], "/").date("YYYYmmdd"); for($i=0;$i<4;++$i){ $full_name.=chr(mt_rand(65,90)); } //拼凑后缀 $full_name.='.'.$ext; //移动到指定目录 if(!is_uploaded_file($file["tmp_name"])){ $error="错误, 不是上传文件"; return false; } if(move_uploaded_file($file["tmp_name"], $path.'/'.$full_name)){ return $full_name; }else{ $error="文件移动失败"; return false; } } //提供数据 $file=$_FILES["image"]; $path="image/"; $allow_format=array("JPG", "JPEG"); $allow_type=array("image/jpeg", "/image/jpg"); $max_size=80000000; $error; if(upload_single($file, $allow_type, $path, $error, $allow_format, $max_size)){ echo "上传成功!"; }else{ echo $error; }