在Node.js中在保持目录结构的情况下压缩指定目录

Posted 湛蓝玫瑰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Node.js中在保持目录结构的情况下压缩指定目录相关的知识,希望对你有一定的参考价值。

最近在做一个文件升级的功能,需要从下载服务器中指定目录下的文件。在学习了zlib后发现这个模块达不到这个功能

在查找资料后发现后发现 archiver 模块很好用,不过我也发现大部分中文资料没有如果查询压缩进度,所以在此分享一下:

archiver的github地址:

https://github.com/archiverjs/node-archiver

API文档地址:

https://archiverjs.com/docs/

压缩等级说明:

var archive = archiver(‘zip‘, {
  zlib: { level: 9 } // Sets the compression level.
});

找了一下文档发现竟然没有说明压缩等级的说明,所以只好翻了一下源代码,找到之后复制到notepad+上,结果在写此文时不小心关掉了,参数不太确定。
-1是默认
0是最低(不太确认)
9是最高

获取进度信息:

global.packageProgress={};
archive.on(‘progress‘, function(progress) {
  console.log(progress);
  packageProgress=progress;
});

只需要绑定这个时间就可以了,事件都可以用这种方式来绑定,具体事件可以参考API文档。

本人使用了2个get路由,第一个用来让node.js开始进行打包处理,设置一个globel变量,然后在绑定的progress事件中不断赋值。
第二个则是返回进度信息用的。(前端轮询)








以上是关于在Node.js中在保持目录结构的情况下压缩指定目录的主要内容,如果未能解决你的问题,请参考以下文章

解压后如何压缩整个目录并保持其结构?

如何将Linux系统的多个目录及文件备份并压缩到一个文件,以方面保持和传递?

node.js 如何在不指定文件夹路径的情况下使用 index.js 解析所需的文件夹?

Node.JS:不保持进程运行的 setTimeout

Node.js之模仿Apache访问指定目录下的资源

部署vuejs dist文件,通过node.js编译