2

我正在尝试找到一种方法,允许我的 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 url 的 ZIP 文件。

是否有人对如何将这些远程文件添加到 ZIP 或什至允许浏览器允许多次下载有任何指示?

非常感谢

4

1 回答 1

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

其他资源:

  1. 在 Meteor 中安装 npm 包
  2. 在 Meteor 中使用 npm 包

直接使用 npm 包将适用于流星 1.3 及更高版本。对于较低版本,请使用此包

于 2016-09-08T13:14:48.597 回答