改进Request类的file方法的多文件上传获取支持

This commit is contained in:
thinkphp
2016-07-12 11:30:30 +08:00
parent a7b426e63a
commit b697c7f565

View File

@@ -809,44 +809,43 @@ class Request
if (!empty($files)) {
// 处理上传文件
$array = [];
$n = 0;
foreach ($files as $key => $file) {
if (is_array($file['name'])) {
$item = [];
$keys = array_keys($file);
$count = count($file['name']);
for ($i = 0; $i < $count; $i++) {
$array[$n]['key'] = $key;
foreach ($keys as $_key) {
$array[$n][$_key] = $file[$_key][$i];
}
$n++;
}
} else {
$array = $files;
break;
}
}
if ('' === $name) {
// 获取全部文件
$item = [];
foreach ($array as $key => $val) {
if ($val instanceof File) {
$item[$key] = $val;
} else {
if (empty($val['tmp_name'])) {
if (empty($file['tmp_name'][$i])) {
continue;
}
$item[$key] = (new File($val['tmp_name']))->setUploadInfo($val);
$temp['key'] = $key;
foreach ($keys as $_key) {
$temp[$_key] = $file[$_key][$i];
}
$item[] = (new File($temp['tmp_name']))->setUploadInfo($temp);
}
$array[$key] = $item;
} else {
if ($file instanceof File) {
$array[$key] = $file;
} else {
if (empty($file['tmp_name'])) {
continue;
}
$array[$key] = (new File($file['tmp_name']))->setUploadInfo($file);
}
}
return $item;
}
if (strpos($name, '.')) {
list($name, $sub) = explode('.', $name);
}
if ('' === $name) {
// 获取全部文件
return $array;
} elseif (isset($sub) && isset($array[$name][$sub])) {
return $array[$name][$sub];
} elseif (isset($array[$name])) {
if ($array[$name] instanceof File) {
return $array[$name];
} elseif (!empty($array[$name]['tmp_name'])) {
return (new File($array[$name]['tmp_name']))->setUploadInfo($array[$name]);
}
return $array[$name];
}
}
return null;