AmazonS3的putobject用于将文件上传到S3,不返回promise



我有一个函数,它使用Amazon S3 putobject将文件上传到S3,但这不会返回我需要等待成功完成的承诺,然后我可以加载一个带有结果(成功或失败(的模态。

我在s3函数上尝试过各种异步等待promise排列,但都不能使用.on-httpUploadProgress。

s3.putObject(params)
.on("httpUploadProgress", (progressEvent, response) => {
const percent = parseInt(
(100 * progressEvent.loaded) / progressEvent.total
)
setuploadprog(percent)
if (percent === 100) {
setuploadsuccess(1)
}
})
.send((err, data) => {
if (err) {
console.log(err, err.stack)
setuploadsuccess(2)
} else {
console.log(data)
}
})

不要用回调调用send。请使用promise方法:

s3.putObject(params)
.on("httpUploadProgress", (progressEvent, response) => {
const percent = Math.floor(progressEvent.loaded / progressEvent.total * 100);
setuploadprog(percent)
})
.promise()
.then(data => {
setuploadsuccess(1);
return data;
}, err => {
setuploadsuccess(2);
throw err;
});
...await s3
.putObject(params)

自己解决这个问题。

最新更新