1 /** 2 * [Upload 上传文件] 3 * @param string $save_path [路径] 4 * @param array $allow_type [允许上传类型] 5 */ 6 function Upload($save_path = ‘./uploads‘, $allow_type = array(‘image‘,‘text‘)){ 7 8 9 10 date_default_timezone_set(‘PRC‘); 11 12 // 1判断错误 13 if (empty($_FILES)) { 14 die(‘不能超过20M以上‘); 15 16 } 17 $key =key($_FILES); 18 // 2判断error错误号, 如果error > 0 ,则说明上传文件出错, 只有error = 0才是上传成功 19 if ($_FILES[$key][‘error‘][0]>0) { 20 switch ($_FILES[$key][‘error‘]) { 21 case ‘1‘: 22 echo ‘上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值‘; 23 break; 24 case ‘2‘: 25 echo ‘上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值‘; 26 break; 27 case ‘3‘: 28 echo ‘文件只有部分被上传‘; 29 break; 30 case ‘4‘: 31 echo ‘没有文件被上传‘; 32 break; 33 case ‘6‘: 34 echo ‘找不到临时文件夹‘; 35 break; 36 case ‘7‘: 37 echo ‘文件写入失败‘; 38 break; 39 40 41 } 42 43 } 44 // 45 // 2判断文件是不是通过 http post协议上传 46 47 if (!is_uploaded_file( $_FILES[ $key ][‘tmp_name‘][0])) { 48 die(‘请正常上传文件,不要搞事情‘); 49 } 50 // 3判断文件类型 51 $str =$_FILES[ $key][‘type‘][0]; // video/mp4 52 // 获取类型 53 $type =strtok($str,‘/‘); 54 55 // 获取后缀名(扩展名) 56 $suffix = ltrim(strstr($str, ‘/‘),‘/‘); 57 // var_dump($suffix); 58 // 自定义允许类型组 59 // 判断type是否 allow_type 里面 60 if (!in_array($type,$allow_type)) { 61 62 die(‘不合法的文件类型‘); 63 } 64 65 // 4 设置 上传之后的文件名 20170320xx.jpg 66 $filename =date(‘Ymd‘).uniqid().‘.‘.$suffix; 67 // var_dump($filename); 68 // 5 判断存储目录 69 $filepath =$save_path.date(‘Y/m/d/‘); 70 // var_dump($filepath); 71 if (!file_exists($filepath)) { 72 73 mkdir($filepath,‘0777‘,true); 74 } 75 76 // 6 移动文件到存储目录 77 if (move_uploaded_file($_FILES[$key][‘tmp_name‘][0], $filepath.$filename)) { 78 echo ‘上传文件成功‘; 79 echo ‘<meta http-equiv="refresh" content="3; url=‘.$_SERVER[‘HTTP_REFERER‘].‘">‘; 80 }else{ 81 82 echo ‘上传文件失败‘; 83 echo ‘<meta http-equiv="refresh" content="3; url=‘.$_SERVER[‘HTTP_REFERER‘].‘">‘; 84 } 85 86 87 } 88 echo Upload();
原文:http://www.cnblogs.com/tj1234/p/6602238.html