1 <?php 2 /** 3 * 文件上传 4 * @param array $file 文件上传的信息(是一个数组,有5个元素) 5 * @param array $allow 允许的文件上传的类型 6 * @param string & $error 引用传递,用来记录错误信息 7 * @param string $path 文件上传目录 8 * @param int $maxsize = 1024*1024 允许文件上传的大小 9 * @param mixed false/$newname 如果上传失败就返回false , 成功就返回文件的新名字 10 */ 11 12 function upload($file,$allow,&$error,$path,$maxsize=1048576){ 13 switch($file['error']){ 14 case 1 : $error = '上传的文件超过了选项限制的值!'; 15 return false; 16 case 2 : $error = '上传文件的大小超过了选项指定的值!'; 17 return false; 18 case 3 : $error = '文件只有部分被上传!'; 19 return false; 20 case 4 : $error = '没有选择文件被上传!'; 21 return false; 22 case 6 : 23 case 7 : $error = '文件写入失败,系统繁忙!'; 24 return false; 25 } 26 27 // 判断文件的大小 28 if($file['size'] > $maxsize){ 29 $error = '文件上传过大!'; 30 return false; 31 } 32 33 if(!in_array($file['type'],$allow)){ 34 $error = '文件上传类型不存在,允许上传是类型有:' . implode(',',$allow); 35 return false; 36 } 37 38 $newname = randname($file['name']); 39 $target = $path . '/' . $newname; 40 $result = move_uploaded_file($file['tmp_name'],$target); 41 if($result){ 42 return $newname; 43 }else{ 44 $error = '发生未知错误,上传失败!'; 45 return false; 46 } 47 } 48 49 /** 50 * 生成一个随机名字的函数,文件名 = 当前时间加上随机数 51 * @param string $filename 文件原始名字 52 * @return string $newname 文件的新名字 53 */ 54 function randname($filename){ 55 $newname = date('YmdHis'); 56 //随机后面的数字 57 $str = "abcdefghijklmnopqrstuvwxyz"; 58 for($i = 0;$i < 6;$i++){ 59 $newname .= $str[mt_rand(0,strlen($str) - 1)]; 60 } 61 $newname .= strrchr($filename,'.'); 62 return $newname; 63 }