如何使用archiver模块压缩单个文件且解压后无嵌套目录
解决archiver压缩单个文件后解压出现嵌套目录的问题
首先排查zip文件的内部结构,用命令行工具查看:
unzip -l /home/rikotech/code/scalewest/repos/hype-nielsen-report/csv/zipped.zip
情况1:zip内部结构正常
如果输出显示文件路径为csv.csv(无嵌套目录),问题出在解压工具——多数默认解压工具会自动创建与zip文件同名的文件夹存放内容,只需选择「解压到当前文件夹」而非「解压到zipped/」即可直接得到目标文件。
情况2:zip内部存在嵌套目录
若输出显示文件路径为zipped/csv.csv,可尝试以下调整:
手动指定文件名,避免路径解析异常:
// 替换原archive.file行 archive.file(srcFilePath, { name: 'csv.csv' })改用
append方法添加文件流,确保路径处理正确:// 替换原archive.file行 const fileStream = fs.createReadStream(srcFilePath); archive.append(fileStream, { name: path.basename(srcFilePath) });
另外,确保archiver为最新版本,旧版本可能存在路径处理bug,执行以下命令更新:
npm update archiver
内容的提问来源于stack exchange,提问作者Hairi
相关产品推荐
相关产品推荐

