Javascript,文件输入和FormData问题


Javascript, File Input and FormData issue

我在将文件输入对象传递给一个函数时遇到问题,该函数在将其输入表单数据数组之前准备并添加到对象数组中。

为了简化,我将其分解为以下内容。

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]);
}

除非您添加更多的密钥/对值,否则您应该能够安全地删除它。