Javascript fetch是否支持本机多文件上传? 总结

Javascript fetch是否支持本机多文件上传? 总结,javascript,ajax,reactjs,upload,fetch,Javascript,Ajax,Reactjs,Upload,Fetch,我正在尝试使用javascript正确设置FormData 我需要能够上传jpg/png,但我可能需要上传一些其他文件类型的pdf/csv在未来使用fetch 预期 我希望它将数据附加到表单中 错误 工作 此代码段工作正常: const formData = new FormData(document.querySelector('form')); formData.append("extraField", "This is some extra data, testing"); return

我正在尝试使用javascript正确设置FormData

我需要能够上传jpg/png,但我可能需要上传一些其他文件类型的pdf/csv在未来使用fetch

预期 我希望它将数据附加到表单中

错误 工作 此代码段工作正常:

const formData = new FormData(document.querySelector('form'));
formData.append("extraField", "This is some extra data, testing");

return fetch('http://localhost:8080/api/upload/multi', {
    method: 'POST',
    body: formData,
});
不起作用 问题
fetch是否支持以本机方式上载多个文件?

代码的问题在lineformData中; 相反,您应该上传每个运行循环的文件,并使用唯一的密钥,如下所示

const fileList = document.querySelector('input[type="file"]').files;
    for(var i=0;i<fileList.length;i++) {
    formData.append('file'+i, fileList.item(i));    
}
我对你的代码产生了一个简单的错误。你可以在这里查看其提交的帖子数据,在这里你可以看到没有上传任何文件

在这页的底部你可以找到

我已经纠正了修饰符的错误。你可以从服务器上查看它的post数据,它显示了我上传的两个文件的详细信息


代码的问题在lineformData.append'files',input.files; 相反,您应该上传每个运行循环的文件,并使用唯一的密钥,如下所示

const fileList = document.querySelector('input[type="file"]').files;
    for(var i=0;i<fileList.length;i++) {
    formData.append('file'+i, fileList.item(i));    
}
我对你的代码产生了一个简单的错误。你可以在这里查看其提交的帖子数据,在这里你可以看到没有上传任何文件

在这页的底部你可以找到

我已经纠正了修饰符的错误。你可以从服务器上查看它的post数据,它显示了我上传的两个文件的详细信息

如果你想要多个文件,你可以使用这个

var input = document.querySelector('input[type="file"]')

var data = new FormData()
for (const file of input.files) {
  data.append('files',file,file.name)
}

fetch('http://localhost:8080/api/upload/multi', {
  method: 'POST',
  body: data
})
如果你想要多个文件,你可以使用这个

var input = document.querySelector('input[type="file"]')

var data = new FormData()
for (const file of input.files) {
  data.append('files',file,file.name)
}

fetch('http://localhost:8080/api/upload/multi', {
  method: 'POST',
  body: data
})

完美的天才完美的天才