我使用具有多个上传属性的单个文件输入字段。我已经测试了单个文件传递,并且它有效。现在我正在尝试 使用数组传递文件,但有一个错误。 没有形式。
HTML:
<input id="fileInfo" name="userfile[]" type="file" multiple>
JS:
var formData = new FormData();
var files = [];
for(var i = 0; i < length; i++) {
files[i] = $('input', '#fileInfo')[0].files[i];
}
formData.append('userfile', files);
$.ajax({
url: "example.php",
data: formData,
type: 'POST',
dataType: 'json',
processData: false,
contentType: false,
success: function(res)
{
console.log("done");
}
});
PHP:
<?php
$length = sizeof($_FILES['userfile']['name']);
json_encode(array($length));
error.log中:
PHP Notice: Undefined index: userfile in /path/to/php on line 2, referer: http://localhost/test
答案 0 :(得分:4)
不是使用文件构建数组(由于源已经是数组,这有点奇怪),而是将文件直接附加到FormData对象:
var formData = new FormData();
// Get all the files so we easily can get the length etc.
// Not necessary, but it will make the code easier to read.
var files = $('input', '#fileInfo')[0].files;
for(var i = 0; i < files.length; i++) {
formData.append('userfile[]', files[i]);
}
$.ajax({
// your ajax call
});
我们还将'userfile'
更改为'userfile[]'
,这将使其成为可以在PHP中循环的数组。