<?php | ||
002 | 这里介绍三种多文件上传的方法,前两种都是直接遍历 | |
003 | 三维超全局数组$_FILES,最后一种是先定义一个单文件 | |
004 | 上传函数,再循环调用该函数,完成多文件的上传。 | |
005 | 1.当多文件上传表单中多个上传文件的name属性为“pic[]”形式时, | |
006 | 也即表单为这种形式: | |
007 | ||
008 | <form action="" method="post" enctype="multipart/form-data"> | |
009 | <input type="hidden" name="MAX_FILE_SIZE" value=""> | |
010 | <input type="file" name="pic[]" /><br><br> | |
011 | <input type="file" name="pic[]" /><br><br> |
012 | <input type="file" name="pic[]" /><br><br> |
013 | <input type="file" name="pic[]" /><br><br> | |
014 | <input type="submit" value="upload"/> | |
015 | ||
016 | </form> | |
017 | |
018 | |
019 | 可用foreach 循环 上传多个文件: | |
020 | ||
021 | //1.获取要上传文件的信息 |
022 | $up_info=$_FILES['pic']; |
023 | ||
024 | $ob_path="../system"; | |
025 | |||
026 | $typelist=array("image/gif","image/jpeg","image/pjpeg","image/png"); //定义运行的上传文件类型 | ||
027 | |
028 | |
029 | for($i=0;$i<count($up_info['name']);$i++){ //foreach 循环处理多个文件上传 | |
030 | //2.判断文件是否上传错误 | |
031 | ||
032 | if($up_info['error'][$i]>0){ | |
033 | switch($up_info['error'][$i]){ | |
034 | case 1: | |
035 | $err_info="上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值"; | |
036 | break; | |
037 | case 2: | |
038 | $err_info="上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值"; | |
039 | break; | |
040 | case 3: | |
041 | $err_info="文件只有部分被上传"; | |
042 | break; | |
043 | case 4: | |
044 | $err_info="没有文件被上传"; | |
045 | break; | |
046 | case 6: | |
047 | $err_info="不到临时文件夹"; | |
048 | break; | |
049 | case 7: | |
050 | $err_info="文件写入失败"; | |
051 | break; | |
052 | default: | |
053 | $err_info="未知的上传错误"; | |
054 | break; | |
055 | } | |
056 | continue($err_info); | |
057 | } | |
058 | ||
059 | ||
060 | //3.判断文件上传的类型是否合法 | |
061 | ||
062 | if(!in_array($up_info['type'][$i],$typelist)){ | |
063 | continue('文件类型错误!'.$up_info['type'][$i]); | |
064 | } | |
065 | ||
066 | //4.上传文件的大小过滤 | |
067 | ||
068 | if($up_info['size'][$i]>1000000){ | |
069 | continue('文件大小超过1000000'); | |
070 | } | |
071 | |
072 | |
073 | //5.上传文件名处理 | |
074 | ||
075 | $exten_name=pathinfo($up_info['name'][$i],PATHINFO_EXTENSION); | |
076 | ||
077 | do{ | |
078 | $main_name=date('YmHis'.'--'.rand(100,999)); | |
079 | $new_name=$main_name.'.'.$exten_name; | |
080 | }while(file_exists($to_path.'/'.$new_name)); | |
081 | |
082 | |
083 | ||
084 | //6.判断是否是上传的文件,并执行上传 | |
085 | ||
086 | if(is_uploaded_file($up_info['tmp_name'][$i])){ | |
087 | |||
088 | if(move_uploaded_file($up_info['tmp_name'][$i],$ob_path.'/'.$new_name)){ | ||
089 | echo '文件上传成功!'; | |
090 | }else{ | |
091 | echo '上传文件移动失败!'; | |
092 | } | |
093 | }else{ | |
094 | echo '文件不是上传的文件'; | |
095 | } | |
096 | ||
097 | } //for循环的括号 | |
098 | ||
099 | 2.当多文件上传表单中多个上传文件的name属性为“pic,text,doc,pdf”形式时, | |
100 | 也即表单为这种形式: | |
101 | ||
102 | <form action="" method="post" enctype="multipart/form-data"> | |
103 | <input type="hidden" name="MAX_FILE_SIZE" value=""> | |
104 | <input type="file" name="pic" /><br><br> | |
105 | <input type="file" name="text" /><br><br> | |
106 | <input type="file" name="doc" /><br><br> | |
107 | <input type="file" name="pdf" /><br><br> | |
108 | ||
109 | <input type="submit" value="upload"/> | |
110 | ||
111 | </form> | |
112 | ||
113 | 也可用foreach 循环 上传多个文件: | |
114 | ||
115 | //1.获取要上传文件的信息 | |
116 | $up_info=$_FILES; | |
117 | ||
118 | $ob_path="..\system"; | |
119 | |||
120 | $typelist=array("image/gif","image/jpeg","image/pjpeg","image/png"); //定义运行的上传文件类型 | ||
121 | |
122 | |
123 | ||
124 | foreach($up_info as $k_name=>$value){ //用foreach循环 处理多个文件的上传 | |
125 | //2.判断文件是否上传错误 | |
126 | ||
127 | if($up_info[$k_name]['error']>0){ | |
128 | switch($up_info['error'][$i]){ | |
129 | case 1: | |
130 | $err_info="上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值"; | |
131 | break; | |
132 | case 2: | |
133 | $err_info="上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值"; | |
134 | break; | |
135 | case 3: | |
136 | $err_info="文件只有部分被上传"; | |
137 | break; | |
138 | case 4: | |
139 | $err_info="没有文件被上传"; | |
140 | break; | |
141 | case 6: | |
142 | $err_info="不到临时文件夹"; | |
143 | break; | |
144 | case 7: | |
145 | $err_info="文件写入失败"; | |
146 | break; | |
147 | default: | |
148 | $err_info="未知的上传错误"; | |
149 | break; | |
150 | } | |
151 | continue($err_info); | |
152 | } | |
153 | |
154 | |
155 | inputtypefile不上传文件//3.判断文件上传的类型是否合法 | |
156 | ||
157 | if(!in_array($up_info[$k_name]['type'],$typelist)){ | |
158 | continue('文件类型错误!'.$up_info[$k_name]['type']); | |
159 | } | |
160 | ||
161 | //4.上传文件的大小过滤 | |
162 | ||
163 | if($up_info[$k_name]['size']>100000){ | |
164 | echo '文件大小超过**'; | |
165 | continue; | |
166 | } | |
167 | |
168 | |
169 | //5.上传文件名处理 | |
170 | ||
171 | $exten_name=pathinfo($up_info[$k_name]['name'],PATHINFO_EXTENSION); | |
172 | ||
173 | do{ | |
174 | $main_name=date('YmHis'.'--'.rand(100,999)); | |
175 | $new_name=$main_name.'.'.$exten_name; | |
176 | }while(file_exists($to_path.'/'.$new_name)); | |
177 | |
178 | |
179 | //6.判断是否是上传的文件,并执行上传 | |
180 | ||
181 | if(is_uploaded_file($up_info[$k_name]['tmp_name'])){ | |
182 | ||
183 | if(move_uploaded_file($up_info[$k_name]['tmp_name'],$ob_path.'/'.$new_name)){ | ||
184 | echo '文件上传成功!'; | ||
185 | }else{ | |
186 | echo '上传文件移动失败!'; | |
187 | } | |
188 | }else{ | |
189 | echo '文件不是上传的文件'; | |
190 | } | |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论