微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NodeJS 压缩文件在 winrar 中打开但在 winzip 上出错

如何解决NodeJS 压缩文件在 winrar 中打开但在 winzip 上出错

我正在创建 csv 文件的 zip 文件,该文件可以在 Ubuntu、winrar、7zip 中正确打开,但在 winzip 中,它给出了“提取文件的大小与 zip 文件中记录的未压缩大小不匹配”的错误

这是我的代码示例:

const Meta = await pgService.getMeta(id);
       
res.header('Content-disposition',`attachment; filename=${Meta.filename}.zip`);
res.header('Content-Type','application/zip');

let zipper = archiver('zip');
zipper.pipe(res);

for (let x = 0; x < test.length; x++) {
    let details = test[x];

    const fields = await pgService.getFieldsByName(details.name);

    let stream;
    
    const csvfields = _.map(fields,(f) => { return { label: f,value: f }; });
    const opts = { fields: csvfields,delimiter: ',',quote: '"' };
    const transformOpts = { highWaterMark: 16384,encoding: 'utf-8' };

    const json2csv = new Transform(opts,transformOpts);

        
        stream = new streams.Transform({
            transform(chunk,encoding,callback) {
                let strChunk = chunk.toString().replace('{ "records" : ','').replace(']}',']');    
                this.push(new Buffer(strChunk,"utf-8"));                        
                callback();
            }
        });

        zipper.append(stream.pipe(json2csv),{ name: `${details.name}.csv` });

    stream.end();

    if (fileMeta.filetype === 'csv') {
        await new Promise((resolve,reject) => {
            json2csv.on('end',() => {
                resolve();
            });
            json2csv.on('error',(err) => reject(err));

        });
    }
}

await zipper.finalize();

如果我做错了什么,请告诉我,或者我应该添加一些东西

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。