gpt4 book ai didi

node.js - 无法在 OSx 上解压缩 Node 存档器生成的文件

转载 作者:太空宇宙 更新时间:2023-11-03 23:59:48 26 4
gpt4 key购买 nike

我正在生成一个基于 JSON 数据的压缩文件。目前,当我生成 TAR 文件时,我的 API 工作得很好。这是我的代码:

app.post('/', (req, res) => {
const filename = 'export.tar';

const archive = archiver('tar', {});

archive.on('warning', (err) => {
console.log(`WARN -> ${err}`);
});

archive.on('error', (err) => {
console.log(`ERROR -> ${err}`);
});

const files = req.body.files || [];
for (const file of files) {
archive.append(file.content, { name: file.name });
console.log(`Appending ${file.name} file: ${JSON.stringify(file, null, 2)}`);
}

try {
if (files.length > 0) {
archive.pipe(res);
archive.finalize();
return res.attachment(filename);
} else {
return res.send({ error: 'No files to be downloaded' });
}
} catch (e) {
return res.send({ error: e.toString() });
}
});

这是我传递的一些示例 JSON:

{
"title": "Sample Title",
"files": [
{
"name": "index.html",
"content": "<p>Hello, World!</p>"
},
{
"name": "README.md",
"content": "# Hello, World!"
}
]
}

但是,当我更改此设置以生成 ZIP 文件时,我收到诸如 21“是一个目录”或 2“没有这样的文件或目录”之类的错误。

我更改的代码是:

  const filename = 'export.zip';
const archive = archiver('zip', {
zlib: { level: 9 },
});

我尝试过查看其他问题和问题,但在制作 store: true 或移动 finalize() 或制作 时没有任何运气forceZip64:true。我可以更改什么以使 ZIP 文件正常工作?

最佳答案

这成功了!通过使用 createWriteStream 创建输出,然后将存档通过管道传输到该输出,我们就能够下载完美运行的 zip。

app.post('/', (req, res) => {
const filename = 'export.zip';

const archive = archiver('zip', {});

let output = fs.createWriteStream(filename);

archive.on('warning', err => {
console.log(`WARN -> ${err}`);
});

archive.on('error', err => {
console.log(`ERROR -> ${err}`);
});

output.on('end', function() {
console.log('Data has been drained');
});
archive.pipe(output);

const files = req.body.files || [];
for (const file of files) {
archive.append(file.content, { name: file.name });
console.log(`Appending ${file.name} file: ${JSON.stringify(file, null, 2)}`);
}

try {
if (files.length > 0) {
archive.finalize();
res.download(filename);
} else {
return res.send({ error: 'No files to be downloaded' });
}
} catch (e) {
return res.send({ error: e.toString() });
}
});

关于node.js - 无法在 OSx 上解压缩 Node 存档器生成的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55333125/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com