HTML
<table>
<tr>
<td> <input type="file" /> </td>
<td> <input type="button" id="btn" /> </td>
</tr>
<tr>
<td> <input type="file" /> </td>
<td> <input type="button" id="btn" /> </td>
</tr>
<tr>
<td> <input type="file" /> </td>
<td> <input type="button" id="btn" /> </td>
</tr>
</table>
JQUERY
var formData = new FormData();
var tr = $(this).closest('tr');
var fup = $(tr).find("input[type='file']");
var totalFiles = fup.length;//Here, getting total file count
for (var i = 0; i < totalFiles; i++) {
var file = fup.file[i];//I am getting exception here
formData.append("fupUpdate", file);
}
我无法获取附加到formdata的文件列表。
Error Message: "Cannot read property '0' of undefined"
请协助我解决问题。
答案 0 :(得分:1)
试试此代码
var fData = new FormData();
var tr = $('table').closest('tr');
var fup = $('tr').find("input[type='file']");
var totalFiles = fup.length;//Here, getting total file count
for (var i = 0; i < totalFiles; i++) {
var file = fup[i].files[0];//Exception will not occur here
console.log(file)
fData.append("fupUpdate", file);
}
不要创建与FormData同名的局部变量
答案 1 :(得分:1)
你做得对,只需更换
var file = fup.file[i];//I am getting exception here
与
var file = fup[i].files[0];// no Exception here.
这样可以正常工作。
答案 2 :(得分:1)
我认为问题在于您选择的输入。您可以使用以下选项:
$(":file")
或者
$("table tr :input[type='file']").each(function (i,v) {
var file=$(v);
//Your code goes here
});
工作示例JsFiddle