我有表格:
<form enctype="multipart/form-data" action="" method="post" id="sendInvoiceForm">
<input type="text" value="Some text">
<input name="file[]" type="file" multiple/>
<input type="button" id="upload" value="Upload File" />
</form>
我的js:
$('#upload').click(function(e) {
e.preventDefault();
var formData = new FormData();
formData.append('files',$("#sendInvoiceForm")[0]);
$.ajax({
url: 'upload.php',
type: 'POST',
xhr: function() {
var myXhr = $.ajaxSettings.xhr();
return myXhr;
},
success: function (data) {
},
data: formData,
cache: false,
contentType: false,
processData: false
});
return false;
});
当我尝试在php中获取我的'文件'时,我只得到 [object HTMLFormElement] 我怎样才能在php上获取我的文件?
但是如果我将formData创建为:var formData = new FormData($("#sendInvoiceForm")[0]);
我可以在_FILES中找到我的文件,但我需要为这个数组命名。
我该如何解决这个问题?感谢
答案 0 :(得分:1)
问题是因为您将form
DOM元素附加到FormData,而不是文件数据。相反,您应该访问该对象的files
数组:
formData.append('files', $('#sendInvoiceForm input[type="file"]')[0].files[0]);
由于可以选择多个文件,因此您需要循环访问它们:
$('#sendInvoiceForm input[type="file"]')[0].files.forEach(function(file) {
formData.append('files', file, file.name);
});