2

次のように、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');
4

1 に答える 1