amazons3-aws-sdk for javascript是否支持多部分"下载“;从S3开始

amazon s3 - Does aws-sdk for javascript supports the multipart "Downloads" from S3?

本文关键字:下载 开始 S3 quot javascript for 是否 支持 多部 amazons3-aws-sdk      更新时间:2023-09-26

我需要使用aws-sdk-js从S3存储桶中下载一大组图像。

现在我通过调用s3.getObject(params, function (err, data)来完成此操作。在我列表中的每个文件的循环中?

除了在aws-sdk-js中逐个下载文件之外,还有其他更快、高效的方法下载文件吗?

基本上,您希望在s3 bucket 上同步目录

可以使用aws CLI中的aws s3 sync或s3cmd CLI 中的s3cmd put --recursive

如果你想使用aws-sdk-js,API中没有同步方法,幸运的是,许多人已经实现了这个功能。

例如,node-s3-客户端具有这样的功能

var params = {
  localDir: "some/local/dir",
  deleteRemoved: true, // default false, whether to remove s3 objects
                       // that have no corresponding local file.
  s3Params: {
    Bucket: "s3 bucket name",
    Prefix: "some/remote/dir/",
    // other options supported by putObject, except Body and ContentLength.
    // See: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property
  },
};
var uploader = client.uploadDir(params);
uploader.on('error', function(err) {
  console.error("unable to sync:", err.stack);
});
uploader.on('progress', function() {
  console.log("progress", uploader.progressAmount, uploader.progressTotal);
});
uploader.on('end', function() {
  console.log("done uploading");
});

您可以使用Node JS s3fs模块,该模块提供与fs模块类似的功能。要下载多个文件,我建议您使用简单易用的s3fs模块。您可以使用s3fs将文件写入s3存储桶的目录中,然后使用readdirp函数:

    var fsImpl = new S3FS('test-bucket', options);
    fsImpl.readdirp('test-folder').then(function(files) {
        // Files contains a list of all of the files similar to [`fs.readdir(path, callback)`](http://nodejs.org/api/fs.html#fs_fs_readdir_path_callback) but with recursive contents 
    }, function(reason) {
       // Something went wrong 
    });

来源:https://www.npmjs.com/package/s3fs

要设置s3fs,请查看下面的链接,它很容易使用:

https://www.npmjs.com/package/s3fs