问题描述
我正在创建 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 (将#修改为@)