我正在尝试压缩两个目录的内容并下载生成的 .zip 文件。一个目录包含 .txt 文件,另一个目录包含 .jpg。我正在使用归档器压缩文件并在节点 js 上运行 express 框架。我倾向于认为问题存在于下载步骤中,因为在项目根目录中创建的压缩文件按预期展开,但是当下载文件时,我收到“错误 2 - 没有这样的文件或目录。 "
app.get('/download',function(req, res){
zipFile = new Date() + "-Backup.zip";
var output = fs.createWriteStream(__dirname +"/backups/"+ zipFile);
var archive = archiver('zip');
output.on('close', function() {
console.log(archive.pointer() + ' total bytes');
console.log('archiver has been finalized and the output file descriptor has closed.');
});
archive.on('error', function(err) {
throw err;
});
archive.pipe(output);
var files1 = fs.readdirSync(__dirname+'/posts');
var files2 = fs.readdirSync(__dirname+'/uploads');
for(var i = 0; i< files1.length; i++){
archive.append(fs.createReadStream(__dirname+"/posts/"+files1[i]), { name: files1[i] });
}
for(var i = 0; i< files2.length; i++){
archive.append(fs.createReadStream(__dirname+"/uploads/"+files2[i]), { name: files2[i] });
}
archive.finalize();
res.download(__dirname + "/backups/" + zipFile, zipFile);
});
zipFile 是一个全局变量。
on 'close' 日志正确触发并且没有发生错误,但文件在下载后不会打开。响应标头或其他我不知道的问题是否存在问题?
谢谢您的帮助。