我试图找到一种方法,允许我的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"});
但是我不太确定如何生成我传递的各种S3网址的ZIP文件。
有没有人知道如何将这些远程文件添加到ZIP中,或者甚至允许浏览器允许多次下载?
非常感谢
答案 0 :(得分:1)
Meteor支持npm包,您可以使用s3-zip
包下载一组文件的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);
此套餐的链接:s3-zip
其他资源:
直接使用npm包将适用于meteor 1.3及更高版本。对于较低版本,请使用this package