Javascript,文件输入和FormData问题

时间:2016-05-17 02:16:28

标签: javascript php arrays javascript-objects

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

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

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?

1 个答案:

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

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