javascript 的 aws-sdk 是否支持来自 S3 的多部分 "Downloads"?
Does aws-sdk for javascript supports the multipart "Downloads" from S3?
我需要使用 aws-sdk-js
从 S3 存储桶下载大量图像。
现在我通过调用 s3.getObject(params, function (err, data)
来完成它。在我列表中的每个文件的循环中?
除了在aws-sdk-js
中一个一个下载文件外,还有其他更快更有效的下载方法吗?
基本上你会想要在 s3 存储桶上同步你的目录
您可以使用来自 s3cmd CLI 的 aws s3 sync
from aws CLI or s3cmd put --recursive
如果你想使用 aws-sdk-js,API 中没有同步方法,幸运的是,很多人已经实现了这个功能。
例如 node-s3-client 具有这样的功能
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,请查看下面的 link,它非常易于使用:
我需要使用 aws-sdk-js
从 S3 存储桶下载大量图像。
现在我通过调用 s3.getObject(params, function (err, data)
来完成它。在我列表中的每个文件的循环中?
除了在aws-sdk-js
中一个一个下载文件外,还有其他更快更有效的下载方法吗?
基本上你会想要在 s3 存储桶上同步你的目录
您可以使用来自 s3cmd CLI 的 aws s3 sync
from aws CLI or s3cmd put --recursive
如果你想使用 aws-sdk-js,API 中没有同步方法,幸运的是,很多人已经实现了这个功能。
例如 node-s3-client 具有这样的功能
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,请查看下面的 link,它非常易于使用: