首页 > 代码库 > 封装一个文件上传并检测安全性、重命名的脚本
封装一个文件上传并检测安全性、重命名的脚本
1 <?php 2 3 /** 4 *实现文件上传 5 *@param array $file 上传的文件的五个信息 6 *@param array $allow 允许文件上传的类型 7 *@param string & $error 用来记录错误信息 8 *@param string $part 文件上传目录 9 *@param int $maxsize = 1048576 10 *@return mixed false|$nwename 失败就返回false,成功就返回新名字 11 */ 12 13 function upload($file,$allow,& $error,$path,$maxsize=1048576){ 14 //1,先判断系统错误 15 switch($file[‘error‘]){ 16 case 1 : $error = "上传失败,超出了文件大小的限制!"; 17 return false; 18 case 2 : $error = "上传失败,超出了浏览器表单允许的文件大小!"; 19 return false; 20 case 3 : $error = "上传失败,文件上传不完整!"; 21 return false; 22 case 4 : $error = "上传失败,请先选择要上传的文件!"; 23 return false; 24 case 6 : 25 case 7 : $error = "对不起,服务器繁忙,请稍后再试!"; 26 return false; 27 } 28 29 //2验证逻辑错误--文件大小 30 if($file[‘size‘] > $maxsize){ 31 $error = "上传失败,超出了文件大小的限制!"; 32 return false; 33 } 34 35 //文件类型 36 if(!in_array($file[‘type‘],$allow)){ 37 $error = "上传文件类型不正确,允许的类型有:" . implode(‘,‘,$allow); 38 return false; 39 } 40 //3,移动临时文件 41 //3.1得到文件的新名字 42 $newname = randName($file[‘name‘]); 43 //3.2 确定文件存储路径 44 $target = $path . ‘/‘ . $newname; 45 //3.3 开始移动 46 $result = move_uploaded_file($file[‘tmp_name‘],$target); 47 if($result){ 48 //上传成功 49 return $newname; 50 }else{ 51 //上传失败 52 $error = "发生未知错误,上传失败!"; 53 return false; 54 } 55 } 56 57 /** 58 *生成一个随机名字的函数 = 当前时间戳 + 随机产生的字符 59 *@param string $filename 文件原始的名字 60 *@return string $newname 文件的新名字 61 * 62 */ 63 64 function randName($filename){ 65 //1,生成文件名的时间戳部分 66 $newname = date("YmdHis"); 67 //2,加上随机的几位数字 68 $str = "1234567890"; 69 for($i=0;$i<6;$i++){ 70 $newname .= $str[mt_rand(0,strlen($str)-1)]; 71 } 72 //3,加上文件的后缀名 73 $newname .= strrchr($filename,‘.‘); 74 return $newname; 75 }
封装一个文件上传并检测安全性、重命名的脚本
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。