在设置包含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);
}
答案 0 :(得分:0)
您正确使用了.append
而不是.set
,但是您忘记了变量应该是数组,因此变量的键应该是file[]
,name[]
,{{1 }}和comment[]
。
这样,您的后端可以正确识别出它们确实是数组。
答案 1 :(得分:0)
您要使用相同的名称附加多个文件。只有最后添加的内容会到达您的服务器。
您至少有2个选择:
为每个字段赋予唯一的名称。与此类似
formdata.append('file'+ i,this。$ refs.assignmentFile [i] .files [0]);
请注意将文件与索引变量串联在一起。
使用数组符号作为字段名称。这与PHP处理POST变量的方式兼容。
formdata.append('file []',this。$ refs.assignmentFile [i] .files [0]);
请注意名称文件[] 中的方括号。
您需要对所有字段执行此操作:文件,名称,注释。