通过Node JS从本地将多个文件同时上传到s3存储桶

Kis*_*nti 6 javascript amazon-s3 amazon-web-services node.js

我正在尝试将文件上传到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("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");
});
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切正常。现在让我们在这里说,我想从本地路径上载5个文件到s3存储桶,我该如何实现,是否有任何直接方法可以为多个文件上载提供亚马逊,或者我需要使用异步模块?

小智 7

NodeJS AWS SDK 没有任何批量 S3 上传方法,我建议您使用 async/await 一次上传多个文件。下面是一个例子:

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)
Run Code Online (Sandbox Code Playgroud)