在FormData中为动态字段设置参数(JavaScript)

时间:2019-03-23 04:46:40

标签: javascript vue.js vuex

在设置包含input[type="file"]的动态字段的表单数据时遇到问题。

用我的话来说,动态字段表示使用数组循环生成字段。

我尝试了for循环,因为数据没有到达服务器。

我正在使用Vue和Vuex。

只有最后一个循环的值才进入数据库。

let formdata = new FormData();
for(var i = 0; i< this.assignmentForm.length; i++) {
  formdata.append('file', this.$refs.assignmentFile[i].files[0]);
  formdata.append('name', this.$refs.assignmentName[i].value);
  formdata.append('comment', this.$refs.assignmentComment[i].value);
  formdata.append('assignment_solution', this.respondId);
}

2 个答案:

答案 0 :(得分:0)

您正确使用了.append而不是.set,但是您忘记了变量应该是数组,因此变量的键应该是file[]name[],{{1 }}和comment[]

这样,您的后端可以正确识别出它们确实是数组。

答案 1 :(得分:0)

您要使用相同的名称附加多个文件。只有最后添加的内容会到达您的服务器。

您至少有2个选择:

  1. 为每个字段赋予唯一的名称。与此类似

    formdata.append('file'+ i,this。$ refs.assignmentFile [i] .files [0]);

请注意将文件与索引变量串联在一起。

  1. 使用数组符号作为字段名称。这与PHP处理POST变量的方式兼容。

    formdata.append('file []',this。$ refs.assignmentFile [i] .files [0]);

请注意名称文件[] 中的方括号。

您需要对所有字段执行此操作:文件,名称,注释。