单个和多个文件上传代码
1 <?php
2 // +----------------------------------------------------------------------
3 // | EBACERA [ WE CAN DO IT JUST THINK IT ]
4 // +----------------------------------------------------------------------
5 // | Copyright (c) 2016 http://www.ebacera.com All rights reserved.
6 // +----------------------------------------------------------------------
7 // | Author: 重设人生 <573914456@qq.com>
8 // +----------------------------------------------------------------------
9 //单个图片上传
10 header("Content-type:text/html;charset=utf-8");
11 $get_type = strtolower($_GET['type']);
12 $type = isset($get_type) ? $get_type : "single";
13 //获取上传的文本域
14 $file_info=$_FILES['file_info'];
15
16
17 if (!empty($file_info)) {
18
19 //单图上传
20 if ($type == "single") {
21
22 $result = uploadFile($file_info); //调用单图上传
23 show_dump($result);
24
25 } else {
26
27 //多图上传
28 $file_list=array();
29 $msg_list=array();
30 foreach($file_info['name'] as $k=>$v){
31 $file_list['name']=$v;
32 $file_list['type']=$file_info['type'][$k];
33 $file_list['tmp_name']=$file_info['tmp_name'][$k];
34 $file_list['error']=$file_info['error'][$k];
35 $file_list['size']=$file_info['size'][$k];
36 //保存上传返回的信息
37 $msg_list[$k]= uploadFile($file_list); //调用单图上传
38 }
39
40
41 }
42
43
44 }
45
46
47 //单图片上传
48 function uploadFile($file_info)
49 {
50
51 $file_name = $file_info['name'];//上传的图片名字
52 $file_type = $file_info['type'];//上传的图片类型
53 $file_tmp_name = $file_info['tmp_name'];//上传的图片零时文件
54 $file_error = $file_info['error'];//上传的图片错误类型【0为没有错误】
55 $file_size = $file_info['size']; //上传的图片大小
56 //1、判断文件是否错误
57 if ($file_error != 0) {
58 echo "上传文件存在错误!";
59 echo $file_error;
60 return false;
61 }
62
63
64 //2、判断文件类型是否错误
65 $ext_list = array('.jpg', '.jpeg', '.png', '.gif');
66 $ext = strrchr($file_name, '.');//截取文件名的后缀
67 if (!in_array($ext, $ext_list)) {
68 // 后缀名非法
69 echo '文件类型非法';
70 return false;
71 }
72 //获取文件类型
73 $type_list = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif');
74 if (!in_array($file_type, $type_list)) {
75 // 文件类型非法
76 echo '文件类型非法';
77 return false;
78 }
79
80
81 //3、判断文件大小
82 $max_size = 1024 * 2014;//1M
83 if ($file_size > $max_size) {
84 echo "文件大小不能超过 $max_size 【1M】";
85 return false;
86 }
87
88
89 //4、生成要保存的文件地址
90 $upload_path = "./upload/";//图片目录
91 $sub_dir = date('YmdH') . "/";
92 if (!is_dir($upload_path . $sub_dir)) {
93 //如果目录不存在就新建一个
94 mkdir($upload_path . $sub_dir);
95 }
96 //生成唯一的文件名
97 $up_name = uniqid() . $ext;
98 // 判断是否为浏览器上传的文件
99 if (! is_uploaded_file($file_tmp_name)) {
100 // 该临时文件可能被破坏(替换)
101 echo '非浏览器上传文件';
102 return false;
103 }
104
105
106 //5、移动零时文件保存到指定目录
107 $result = move_uploaded_file($file_tmp_name, $upload_path . $sub_dir . $up_name);
108 if ($result) {
109 echo "<br/>".$upload_path . $sub_dir.$up_name;
110 } else {
111 // 移动失败
112 echo '移动失败';
113 return false;
114 }
115
116
117 }
118
119
120 function show_dump($array)
121 {
122 echo "<pre>";
123 print_r($array);
124 echo "</pre>";
125 }
2 // +----------------------------------------------------------------------
3 // | EBACERA [ WE CAN DO IT JUST THINK IT ]
4 // +----------------------------------------------------------------------
5 // | Copyright (c) 2016 http://www.ebacera.com All rights reserved.
6 // +----------------------------------------------------------------------
7 // | Author: 重设人生 <573914456@qq.com>
8 // +----------------------------------------------------------------------
9 //单个图片上传
10 header("Content-type:text/html;charset=utf-8");
11 $get_type = strtolower($_GET['type']);
12 $type = isset($get_type) ? $get_type : "single";
13 //获取上传的文本域
14 $file_info=$_FILES['file_info'];
15
16
17 if (!empty($file_info)) {
18
19 //单图上传
20 if ($type == "single") {
21
22 $result = uploadFile($file_info); //调用单图上传
23 show_dump($result);
24
25 } else {
26
27 //多图上传
28 $file_list=array();
29 $msg_list=array();
30 foreach($file_info['name'] as $k=>$v){
31 $file_list['name']=$v;
32 $file_list['type']=$file_info['type'][$k];
33 $file_list['tmp_name']=$file_info['tmp_name'][$k];
34 $file_list['error']=$file_info['error'][$k];
35 $file_list['size']=$file_info['size'][$k];
36 //保存上传返回的信息
37 $msg_list[$k]= uploadFile($file_list); //调用单图上传
38 }
39
40
41 }
42
43
44 }
45
46
47 //单图片上传
48 function uploadFile($file_info)
49 {
50
51 $file_name = $file_info['name'];//上传的图片名字
52 $file_type = $file_info['type'];//上传的图片类型
53 $file_tmp_name = $file_info['tmp_name'];//上传的图片零时文件
54 $file_error = $file_info['error'];//上传的图片错误类型【0为没有错误】
55 $file_size = $file_info['size']; //上传的图片大小
56 //1、判断文件是否错误
57 if ($file_error != 0) {
58 echo "上传文件存在错误!";
59 echo $file_error;
60 return false;
61 }
62
63
64 //2、判断文件类型是否错误
65 $ext_list = array('.jpg', '.jpeg', '.png', '.gif');
66 $ext = strrchr($file_name, '.');//截取文件名的后缀
67 if (!in_array($ext, $ext_list)) {
68 // 后缀名非法
69 echo '文件类型非法';
70 return false;
71 }
72 //获取文件类型
73 $type_list = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif');
74 if (!in_array($file_type, $type_list)) {
75 // 文件类型非法
76 echo '文件类型非法';
77 return false;
78 }
79
80
81 //3、判断文件大小
82 $max_size = 1024 * 2014;//1M
83 if ($file_size > $max_size) {
84 echo "文件大小不能超过 $max_size 【1M】";
85 return false;
86 }
87
88
89 //4、生成要保存的文件地址
90 $upload_path = "./upload/";//图片目录
91 $sub_dir = date('YmdH') . "/";
92 if (!is_dir($upload_path . $sub_dir)) {
93 //如果目录不存在就新建一个
94 mkdir($upload_path . $sub_dir);
95 }
96 //生成唯一的文件名
97 $up_name = uniqid() . $ext;
98 // 判断是否为浏览器上传的文件
99 if (! is_uploaded_file($file_tmp_name)) {
100 // 该临时文件可能被破坏(替换)
101 echo '非浏览器上传文件';
102 return false;
103 }
104
105
106 //5、移动零时文件保存到指定目录
107 $result = move_uploaded_file($file_tmp_name, $upload_path . $sub_dir . $up_name);
108 if ($result) {
109 echo "<br/>".$upload_path . $sub_dir.$up_name;
110 } else {
111 // 移动失败
112 echo '移动失败';
113 return false;
114 }
115
116
117 }
118
119
120 function show_dump($array)
121 {
122 echo "<pre>";
123 print_r($array);
124 echo "</pre>";
125 }
Error
0:没有错误
1:文件过大,超过PHP.ini中配置:
2:文件过大,超过表单元素:MAX_FILE_SIZE
目的,将大小的限制,在表单层级实现。
Tip:改值也是服务器判断,虽然在表单中完成。
3:文件部分上传。
4:没有上传文件
5:一般认为:文件长度为0(程序自己定义的,不做准确值)
6:上传临时目录没有找到。
7:上传临时目录写入失败。