Javascript 通过节点js将多个文件同时从本地上传到s3 bucket
我正在尝试将一个文件上传到s3存储桶,下面是我用来完成此操作的代码Javascript 通过节点js将多个文件同时从本地上传到s3 bucket,javascript,node.js,amazon-web-services,amazon-s3,Javascript,Node.js,Amazon Web Services,Amazon S3,我正在尝试将一个文件上传到s3存储桶,下面是我用来完成此操作的代码 var params = { localFile: "../Processor/1.wav", s3Params: { Bucket: "bucketname", Key: "1.wav", }, }; var uploader = client.uploadFile(params); uploader.on('error', function(err) { console.error("una
var params = {
localFile: "../Processor/1.wav",
s3Params: {
Bucket: "bucketname",
Key: "1.wav",
},
};
var uploader = client.uploadFile(params);
uploader.on('error', function(err) {
console.error("unable to upload:", err.stack);
});
uploader.on('progress', function() {
console.log("progress", uploader.progressMd5Amount,
uploader.progressAmount, uploader.progressTotal);
});
uploader.on('end', function() {
console.log("done uploading");
});
到目前为止,一切都很顺利。现在让我们在这里说,我想从本地路径上传5个文件到s3 bucket,我如何实现这一点?是否有任何直接方法为多个文件上传提供amazon,或者我需要使用async模块?NodeJS AWS SDK没有任何批量s3上传方法,我建议您使用async/Wait一次性上传多个文件。下面是一个例子:
const s3 = new AWS.S3()
const params = [
{ Bucket: 'bucket', Key: 'key', Body: 'body' },
{ Bucket: 'bucket', Key: 'key2', Body: 'body2' },
{ Bucket: 'bucket', Key: 'key3', Body: 'body3' }
]
const responses = await Promise.all(
params.map(param => s3.upload(param).promise())
)
console.log(responses)
您知道如何处理此实施的进度吗?@MarceloFormentão
Promise.all
并不能直接处理进度,但确实有可能,请查看此问题的答案: