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();