как подсказать где скачать zip файл созданный архиватором в узле - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь создать zip-файл в узле, используя код, предоставленный из , как создать zip-файл в узле при наличии нескольких загружаемых ссылок , как показано ниже:

var fs = require('fs');
var archiver = require('archiver');
var output = fs.createWriteStream('./example.zip');
var archive = archiver('zip', {
    gzip: true,
    zlib: { level: 9 } // Sets the compression level.
});

archive.on('error', function(err) {
  throw err;
});

// pipe archive data to the output file
archive.pipe(output);

// append files
archive.file('/path/to/file0.txt', {name: 'file0-or-change-this-whatever.txt'});
archive.file('/path/to/README.md', {name: 'foobar.md'});

//
archive.finalize();

Когда я использую это предложение, zip-файл загружается без какого-либо запроса, спрашивающего меня, где я хотел бы сохранить файл - есть ли способ сделать это так, чтобы было создано приглашение, спрашивающее меня, где я хотел бы сохранить файл, что вполне нормально в наши дни?

Если это абсолютно невозможно, возможно ли будет всегда сохранять файл в папке загрузок (независимо от того, используется ли ma c или windows или любая другая операционная система)?

1 Ответ

0 голосов
/ 11 апреля 2020

Итак, здесь есть пара вещей. В терминах «подсказка» или «всплывающее окно» вы не найдете ничего похожего на WinForms «из коробки», есть опции для командной строки, такие как prompts. Вы можете использовать это в качестве пользовательского ввода.

https://www.npmjs.com/package/prompts

Вы можете использовать path и, более конкретно, path.join() для борьбы с проблемой mac / windows / linux.

Вам нужно использовать path.join в node.js?

Вы можете запустить сервер express и создать маршрут, который использует res.download(), в котором вы бы предоставьте заархивированный файл.

https://expressjs.com/en/api.html#res .download

...