Как создать ZIP-файл из файлов S3 в Meteor

Я пытаюсь найти способ позволить пользователю в моем приложении Meteor нажать кнопку и загрузить несколько файлов, к которым у них есть доступ (которые хранятся в S3 с помощью пакета Slingshot).

Моей первой идеей было просто открыть каждый файл в новой вкладке в браузере, но быстро увидеть, что некоторые браузеры не позволяют открывать несколько новых вкладок и видеть их как всплывающие окна.

Я видел пакет 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"});

но я менее уверен в том, как создать ZIP-файл из различных URL-адресов S3, которые я передаю.

У кого-нибудь есть указания, как добавить эти удаленные файлы в ZIP-архив или, возможно, даже разрешить браузерам несколько загрузок?

Большое спасибо

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. Установка пакета npm в Метеор
  2. Использование пакета npm в Meteor

Непосредственное использование пакетов npm подойдет для метеора 1.3 и выше. Для более низких версий используйте этот пакет

Другие вопросы по тегам