我正在使用 javascript FileAPI 和 XmlHttpRequest 构建一个文件上传器,并回退到通过隐藏的 iframe 上传。两个上传都使用 PHP 处理。
然而,我发现 $_FILES 数组的结构方式存在令人讨厌的差异。
使用 iframe 后备时,数组将如下所示:
$_FILES = array(
'files' => array(
'name' => array(
0 => 'name.jpg'
),
'type' => array(
0 => 'image/jpeg'
)
...
)
)
(我正在使用称为文件 [] 的多个输入)
当我使用 XmlHttpRequest 上传时,数组如下所示:
$_FILES = array(
'filename' => array(
'name' => 'name.jpg',
'type' => 'image/jpeg'
...
),
...
)
有什么方法可以使这种行为方式相同吗?您可以在下面找到我如何构建我的 xhr 请求:
var data = new FormData(), xhr = new XMLHttpRequest();
data.append(file.name, file);
xhr.open('POST', 'process.php', true);
xhr.onload = function(e) {
...
};
xhr.send(data);
目前我像这样解析两个不同的数组,这似乎有效。
if(isset($_FILES['files']['name']))
{ // old skool $_FILES array
foreach($_FILES['files'] as $key => $values)
{
foreach($values as $index => $value)
{
$files[$index][$key] = $value;
}
}
}
else
{ // XMLHttpRequest $_FILES
$files = $_FILES;
}