先上代码:
<input type='file' name='photo[]'>
<input type='file' name='photo[]'>
<input type='file' name='photo[]'>
如果是$upload->upload();直接上传,相当于$upload->upload($_FILES);
但是,当我传一个指定的input的name,
比如:$upload->upload($_FILES['photo']);就会出问题,
具体问题就是uploads里面的逐个文件检测时返回false,
经检查发现,检测没有错,而是在这之前的数组转换出错了。
先贴原来的代码:
private function dealFiles($files) {
$fileArray = array();
$n = 0;
foreach ($files as $key=>$file){
if(is_array($file['name'])) {
$keys = array_keys($file);
$count = count($file['name']);
for ($i=0; $i<$count; $i++) {
$fileArray[$n]['key'] = $key;
foreach ($keys as $_key){
$fileArray[$n][$_key] = $file[$_key][$i];
}
$n++;
}
}else{
$fileArray = $files;
break;
}
}
return $fileArray;
}
以上就是针对$_FILES的转换代码,如果要对$_FILES['photo']进行转换,这个代码就不能用了。
看下面我修改过的,
private function dealFiles($files) {
$fileArray = array();
if(is_array($files['name'])){
$count = count($files['name']);
$keys = array_keys($files);
for ($i=0; $i<$count; $i++) {
foreach ($keys as $_key){
$fileArray[$i][$_key] = $files[$_key][$i];
}
}
}else{
$fileArray = $files;
}
return $fileArray;
}