Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过节点js将多个文件同时从本地上传到s3 bucket_Javascript_Node.js_Amazon Web Services_Amazon S3 - Fatal编程技术网

Javascript 通过节点js将多个文件同时从本地上传到s3 bucket

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

我正在尝试将一个文件上传到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");
});

到目前为止,一切都很顺利。现在让我们在这里说,我想从本地路径上传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
并不能直接处理进度,但确实有可能,请查看此问题的答案: