我有以下HTML表单:
<form action="mail/filesend.php" method="POST" accept-charset="utf-8" enctype="multipart/form-data" validate>
<div class="input-wrpr">
<input type="file" name="files">
</div>
<button type="submit">
Send File
</button>
</form>
我在文件输入中附加了以下更改事件:
let files = null; // Global variable
$('input[type="file"]').on('change' , (e) => {
files = e.target.files;
});
我的提交处理程序中包含以下代码:
$('form').submit(function(e) {
e.stopPropagation();
e.preventDefault();
let data = new FormData();
console.log(data);
$.each(files, function(key, value) {
data.append(key, value);
});
console.log(data);
});
注意我console.log
循环之前和之后的$.each
数据,我遇到的问题是$.each
循环之前和之后没有数据附加到{ {1}}变量。为什么会这样?
如果我data
键,则值为console.log
作为键,并且对象看起来像下面的值:
0
为什么File {name: "IMO.pdf", lastModified: 1501150320000, lastModifiedDate: Thu Jul 27 2017 15:42:00 GMT+0530 (India Standard Time), webkitRelativePath: "", size: 5941320, …}
循环无法将数据附加到我的$.each
变量?
答案 0 :(得分:2)
我不知道为什么你的代码失败了,但是0,1,2 ...可能不是好的参数。可以这样做:
$.each(files, function(key, value){
data.append("files[]",value,value.name);
});
答案 1 :(得分:1)
使用console.log(data.getAll('0'))
检查文件的data
对象。
仅使用console.log(data)
是不够的。
答案 2 :(得分:1)
首先,如果您的输入接受多个文件,则需要将[]
添加到您的姓名attr
<input type="file" name="files[]" id="my-inptu">
second 我们会将files变量添加到您的提交处理程序中:
$('form').submit(function(e) {
e.stopPropagation();
e.preventDefault();
let files = $("#my-input")[0].files;
let data = new FormData();
console.log(data);
$.each(files, function(key, value) {
data.append(files[key].name, value);
});
console.log(data);
});
答案 3 :(得分:1)
这对你有用吗?
$.each(files, function(key, value){
data.append("files[]",value);
});