如何在Meteor中生成S3文件的ZIP文件

如何在Meteor中生成S3文件的ZIP文件,meteor,amazon-s3,zip,jszip,Meteor,Amazon S3,Zip,Jszip,我正试图找到一种方法,允许我的Meteor应用程序中的用户单击一个按钮并下载他们有权访问的多个文件(使用Slingshot包存储在S3中) 我的第一个想法是在浏览器中的一个新选项卡中打开每个文件,但很快就会发现一些浏览器不允许打开多个新选项卡,并将它们视为弹出窗口 我看过JSZip包,我想我理解了如何使用基本文本插入创建ZIP文件 var zip = new JSZip(); zip.file("Hello.txt", "Hello World\n"); var img = zip.folder

我正试图找到一种方法,允许我的Meteor应用程序中的用户单击一个按钮并下载他们有权访问的多个文件(使用Slingshot包存储在S3中)

我的第一个想法是在浏览器中的一个新选项卡中打开每个文件,但很快就会发现一些浏览器不允许打开多个新选项卡,并将它们视为弹出窗口

我看过JSZip包,我想我理解了如何使用基本文本插入创建ZIP文件

var zip = new JSZip();
zip.file("Hello.txt", "Hello World\n");
var img = zip.folder("images");
img.file("smile.gif", imgData, {base64: true});
var content = zip.generate({type:"blob"});
但我不太确定如何生成包含我传递的各种S3URL的ZIP文件

是否有人有任何关于如何将这些远程文件添加到ZIP或者甚至允许浏览器允许多个下载的指针


非常感谢Meteor支持npm软件包,您可以使用
s3zip
软件包下载一组文件的zip文件

样本使用:

var s3Zip = require('s3-zip');
var fs = require('fs');

var region = 'bucket-region';
var bucket = 'name-of-s3-bucket';
var folder = 'name-of-bucket-folder/';
var file1 = 'Image A.png';
var file2 = 'Image B.png';
var file3 = 'Image C.png';
var file4 = 'Image D.png';

var output = fs.createWriteStream(__dirname + '/use-s3-zip.zip');

s3Zip
  .archive({ region: region, bucket: bucket}, folder, [file1, file2, file3, file4])
  .pipe(output);
此软件包的链接:

其他资源:

  • 直接使用npm包将适用于meteor 1.3及以上版本。对于较低版本,请使用