gpt4 book ai didi

javascript - 如何使用 AWS SDK for S3 修复 JavaScript Promise?

转载 作者:行者123 更新时间:2023-11-30 06:16:04 24 4
gpt4 key购买 nike

使用 JavaScript promise 将一批文件上传到 s3 存储桶,.then() 函数会在 putObject() 函数之后立即调用。当所有文件都成功上传时,我如何配置它来调用?

您可以在下面看到我尝试过的代码,其中大部分来自 AWS 教程站点。

var putBatch = function putBatch(bucket,folder, files) {
// Make all the putObject calls immediately
// Will return rejected promise if any requests fail
return Promise.all(files.map(function(file) {
var params = {
Bucket: bucket,
Key: folder +"/" + file.name,
Body: file,
Metadata: {
latlng: "saf",
timestamp: "fds",
alt: "df",
mission: "kjfahsdk"
}
};
return s3.putObject(params).promise();
}));
};

function addPhoto(albumName) {
var fileBatch = [];
var files = document.getElementById("inputGroupFile01").files;
if (!files.length) {
return alert("Please choose a file to upload first.");
}

for (var i = 0; i < files.length; i++) {
// console.log((files[i]));
var file = files[i];
var fileName = file.name;
// var albumPhotosKey = encodeURIComponent(albumName) + '//';
var photoKey = albumName + "/" + fileName;
fileBatch.push(file);
}
//putBatch(albumName, fileBatch);

putBatch(albumBucketName,albumName, fileBatch)
.then(console.log("done"))
.catch(console.error.bind(console));
}

只要我调用 putBatch() 函数,我就会在控制台中收到“完成”消息。

最佳答案

您可以使用异步等待文件上传到 s3,例如:

var putBatch = function async putBatch(bucket,folder, files) {
// Make all the putObject calls immediately
// Will return rejected promise if any requests fail
let result = await Promise.all(files.map(async (file) => {
var params = {
Bucket: bucket,
Key: folder +"/" + file.name,
Body: file,
Metadata: {
latlng: "saf",
timestamp: "fds",
alt: "df",
mission: "kjfahsdk"
}
};
let s3Result = await s3.putObject(params).promise();
return s3Result;
}));
return result;
};

关于javascript - 如何使用 AWS SDK for S3 修复 JavaScript Promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56089826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com