<?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属性为pictextdocpdf”形式时,
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
  
inputtypefile不上传文件
155
//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小时内删除。