我有一个允许用户上传多张图片的上传器。为了只创建或更新他想要添加/更改的图像,我更新了一个如下所示的对象:
{main: Blob, "1": Blob, "2":Blob}
所以如果后面只需要更新“1”,发送的对象只会包含 {"1": Blob}
单击保存时,它会触发一个函数,该函数应该将图像附加到 formData()。遗憾的是 formData 永远不会更新。我有以下错误:
无法在“FormData”上执行“追加”:参数 2 不是“Blob”类型。
export async function uploadImages(files, userId) {
try {
const images = new FormData();
files.main && images.append("image", files.main, "main");
files[1] && images.append("image", files[1], "1");
files[2] && images.append("image", files[2], "2");
const res = await ax.post(process.env.SERVER_URL + "/upload-images", {
images,
userId,
});
return "success"
} catch (err) {
return "error"
}
}
如何解决这个问题?谢谢!
原文由 DoneDeal0 发布,翻译遵循 CC BY-SA 4.0 许可协议
您不应该在控制台中看到 FormData 对象的内容,因为它不可序列化。您可以改为检查请求负载,检查浏览器开发工具中的“网络”选项卡,找到您的请求并查看“标头”选项卡底部以查看“FormData”日志。你会看到这样的东西:
此外,您应该在 axios 中将标头“Content-Type”设置为“multipart/form-data”。这是工作示例: