我正在尝试使用签名 URL 将多个图像上传到 s3 存储桶。流程是前端应用程序向服务器发送 GET 请求,以获取要上传的每个图像的签名 url。然后,前端应用程序使用签名的 URL 将图像直接上传到 s3 存储桶。
我的问题是如何处理一张图片上传失败的情况?
例如,如果我想上传三张图片,其中一张上传失败,我是否必须先从 s3 存储桶中删除另外两张图片,然后才能让用户尝试再次上传文件?
/*
* @param {array} images: Array of objects of shape ({image: object, signedUrl: string})
*
*/
const uploadImages = (images) => {
const axiosPutPromises = images.map(({ image, signedUrl }) => {
const putFile = () => axios.put(signedUrl, image, {
headers: {
"Content-Type": image.type
}
});
return putFile();
});
try {
const res = await axios.all(axiosPutPromises);
// dispatch res to redux store
} catch (err) {
/*Not sure how to handle error where only one files fails to upload*/
}
最佳答案
我没有使用过 axios,但是我在一个项目中使用我正在处理的常规 Promise 处理这个问题的方式是避免拒绝。
因此,我捕获了每个作业 Promise 中的任何错误,然后接受具有结构化值的 Promise,该值让我可以区分成功和失败。然后,您可以检查 Promise.all() 返回的数组并执行您想要的任何错误处理。
关于javascript - 使用 Promise.all() 将多个图像上传到 AWS s3。如何处理只有一张图片无法上传的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51458381/