我遇到一个问题,即将文件输入对象传递给一个函数,该函数在将其提供给表单数据数组之前准备并添加到对象数组。
为了简化这一点,我将其分解为以下内容。
case "file":
values[input_name] = inputs[i].files[0];
break;
return values;
如果我将文件读入对象数组
values{"imagename": file}
在将该对象传递给formData对象之前
formParams.append("imagename", file);
我正在使用以下循环完成整个对象
var formParams = new FormData();
for (key in values) {
formParams.append(key, values[key]);
log("error", "FormData Key: " + key + " Data:" + values[key]);
}
FormData
对象似乎没有传递实际文件,但它会传递FileList
数据,名称,大小等。
我的问题是,文件本身是否可以传递给一个对象并保持机智,似乎我正在丢失正在上传的图像的文件库。
当表单由另一端的PHP
处理时,它不会填充$_FILES
数组,并且PHP进程函数失败,因为它没有看到任何数据对于相应的输入字段。
我是否在将文件传递给对象之前将文件数据传递给FormData?
答案 0 :(得分:0)
您可以将您尝试发送的表单元素传递给FormData
对象:
form.addEventListener('submit', function(ev) {
var formParams = new FormData(form);
// here you can perform your ajax request
ev.preventDefault();
}, false);
我不确定你需要阻止
for (key in values) {
formParams.append(key, values[key]);
log("error", "FormData Key: " + key + " Data:" + values[key]);
}
除非您添加更多键/对值,否则您应该能够安全地删除它。