[英]How to download Zip File from an s3 bucket to a local directory within a node.js lambda function
[英]Download images from amazon s3 bucket in Node js in zip format
我正在使用Node js和Amazon s3服务来存储图像。 我在bucket中有不同的文件夹。每个文件夹都有子文件夹。 任何人都可以建议一种方法来下载原始大小的特定文件,并将它们组合为zip文件。 如果我可以指定图像键或URL,并且将被下载,将很有帮助。
一种方法是通过指定密钥和存储桶信息,使用AWS-SDK包的getObject()方法来获取所有图像。
您可以使用JSZip压缩图像。 之后,您可以将zip保存到Amazon s3并提供给用户URL或使用“ fs”包将其保存到本地计算机。
我在这里放置我使用的示例代码
s3 = new AWS.S3({
endpoint: s3url
}),
zip = new JSZip();
function() {
var albumImages = [{"name":filename,"key":key}], // contains image key and filename
content = null;
// using async eachLimit to get images parallely
async.eachLimit(albumImages, 10, function(albumImage, next) {
var params = {
Bucket: imageBucket, // bucket name
Key: albumImage.key
};
s3.getObject(params, function(err, data) {
if (err) {
console.log('get image files err',err, err.stack); // an error occurred
} else {
zip.file(albumImages.indexOf(albumImage) + albumImage.name, data.Body);
next();
}
});
}, function(err) {
if (err) {
console.log('err', err);
} else {
content = zip.generate({
type: 'nodebuffer'
});
var params = {
Bucket: archiveBucket, // name of dest bucket
Key: 'images.zip',
Body: content
};
s3.putObject(params, function(err, data) {
if (err) {
console.log('upload zip to s3 err',err, err.stack); // an error occurred
} else {
console.log(data); // successful response
}
});
}
});
}
在这里,我将zip再次保存到另一个s3存储桶中。 您也可以使用aws lambda进行压缩。
s3不允许您压缩文件并下载,但是它允许您在上传之前压缩文件,这些文件可以单独下载。
这意味着您的下载将始终是您上传的文件的全部或一部分,而不是相反。
您始终可以使用带有要下载文件前缀的listObjects命令下载多个文件,然后在每个列出的对象上都紧跟getObject
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.