Как создать 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
Дополнительные ресурсы:
Непосредственное использование пакетов npm подойдет для метеора 1.3 и выше. Для более низких версий используйте этот пакет