Я использовал нод-архиватор для архивирования файлов следующим образом.Но я получаю поврежденный zip-файл.
app.get('/download', async (req, res) => {
const arch = archiver('zip');
arch.append('abc', { name: 'abc.txt'});
arch.append('cdf', { name: 'cdf.txt'});
res.attachment('test.zip').type('zip');
arch.pipe(res);
arch.finalize();
});
Я изменил код для непосредственного сохранения в файловой системе.С помощью этого кода я получаю рабочий zip-файл, созданный в файловой системе.
app.get('/download', async (req, res) => {
const arch = archiver('zip');
arch.append('abc', { name: 'abc.txt'});
arch.append('cdf', { name: 'cdf.txt'});
const output = fs.createWriteStream('./test.zip');
arch.pipe(output);
arch.finalize();
});
Почему zip-файл повреждается при отправке через экспресс-объект res
?Что бы исправить?
Редактировать: Если я использую выходной формат как tar
вместо zip, он работает без проблем.
const arch = archiver('tar');