Ajax上传只会将第一个文件传递给php文件
问题描述:
我试图在单个输入字段中上传多个文件。到目前为止,代码的作品,但它只是发送第一个文件到upload.php文件。我正在使用jQuery。Ajax上传只会将第一个文件传递给php文件
HTML:
<input id="carica" type="file" name="carica[]" multiple="true"/>
<button type="button" id="upload_sub" class="button">Carica</button>
的JavaScript:
$("#upload_sub").click(function() {
$.ajax({
url: "./src/upload.php",
type: "POST",
contentType: false,
processData: false,
data: function() {
var data = new FormData();
data.append("carica", $("#carica").get(0).files[0]);
return data;
// Or simply return new FormData(jQuery("form")[0]);
}(),
error: function(_, textStatus, errorThrown) {
alert("Error");
console.log(textStatus, errorThrown);
},
success: function(response, textStatus) {
alert("Success");
console.log(response, textStatus);
}
});
});
PHP:
print_r ($_FILES);
输出:
Array
(
[carica] => Array
(
[name] => prova.pdf
[type] => application/pdf
[tmp_name] => /tmp/phpvIlTeL
[error] => 0
[size] => 7234
)
)
success
答
遍历整个文件列表和发送的所有文件
data: function() {
var data = new FormData();
var files = $("#carica").get(0).files;
for (var i = 0; i < files.length; i++){
data.append("carica[]", files[i]);
}
return data;
}(),
+0
保存我的作品。非常感谢你,我认为'.get(0).files [0]'有问题,但是由于我对jQuery的知识非常有限,我不知道如何行动。 – Dankorw 2014-09-21 14:17:54
你忘了一个循环。 – Dorvalla 2014-09-21 14:32:03
是的,正是这样!顺便说一下,下面的答案显示了我的问题的准确解决方案。 – Dankorw 2014-09-21 14:37:21