封装一个文件上传并检测安全性重命名的脚本
Posted Oink
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了封装一个文件上传并检测安全性重命名的脚本相关的知识,希望对你有一定的参考价值。
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 }
以上是关于封装一个文件上传并检测安全性重命名的脚本的主要内容,如果未能解决你的问题,请参考以下文章