我在将文件输入对象传递给一个函数时遇到问题,该函数在将其输入表单数据数组之前准备并添加到对象数组中。
为了简化,我将其分解为以下内容。
case "file":
values[input_name] = inputs[i].files[0];
break;
return values;
如果我将文件读入对象阵列
values{"imagename": file}
在将该对象传递到窗体数据对象之前
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之前,将文件传递到对象是否会丢失文件数据?
您可以将要发送的表单元素传递给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]);
}
除非您添加更多的密钥/对值,否则您应该能够安全地删除它。