次のように、node-archiver を使用してファイルを圧縮しました。しかし、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();
});
Expressres
オブジェクト経由で送信中に zip ファイルが破損するのはなぜですか? 何が修正されますか?
編集: zip の代わりに
出力形式を使用するtar
と、問題なく動作します。
const arch = archiver('tar');