reactjs - 为什么不附加到数据?
问题描述
我有一个用于处理将文件上传到 API 的功能,我已将问题缩小到我尝试创建的 formData(at data variable) 似乎什么也没得到。函数循环通过的 selectedFiles 总是充满一个或多个文件(使用控制台日志检查)。每当我尝试 console.log(data) 时,即使我附加了它们,它也没有来自 selectedFiles 的文件,所以我一直只是将空的 formData 发送到我的 API。我可能没有正确附加数据???
这是 fileUploader 函数:
const fileUploader = () => {
const data = new FormData();
if (selectedFiles) {
//for loop to loop through the selected files and add them to the form data
for (let i = 0; i < selectedFiles.length; i++) {
data.append(selectedFiles[i].name, selectedFiles[i]);
}
axios
.post(
`http://localhost:3030/api/listings/${listingId}/uploadimages`,
data,
{
headers: {
accept: 'application/json',
'Accept-Language': 'en-US,en;q=0.8',
'Content-Type': `multipart/form-data; boundary=${data._boundary}`,
},
}
)
.then((res) => {
console.log(res.data);
})
.catch((err) => {
console.log(err);
});
}
};
解决方案
从技术上讲,一个表单允许有许多同名字段,因此多次调用 append 会添加更多同名字段。
尝试这个
for (let i = 0; i < selectedFiles.length; i++) {
data.append("files[]", selectedFiles.files[i]);
}
推荐阅读
- javascript - 使用 Javascript/Vue.Js 合并数组中的数组
- dart - 枚举可以在 AngularDart 模板中使用吗?如何?
- panel - 带有矢量面板设计 v11 的透明按钮?
- amazon-web-services - 如何在整个 Swagger YAML 文档中重复使用我的 x-amazon-apigateway-integration 定义?
- php - 仅获取 id 的最后一个结果
- java - 考虑到 Java 中 tinkergraph 权重的最短路径
- git - git 仅将特定功能从 dev 合并到 master
- android - 通知生成器在随机时间显示通知
- javascript - 角表渲染问题(它渲染了太多的单元格)
- javascript - 当有人之前给予许可时,我的网页项目会自动获取 Facebook 信息