在这个功能中,我使用了以下四个模块的一些方法,关于这四个模块的详情可以点击下方查阅:
该功能的流程是:
- 创建写入流 fs.createWriteStream
- 请求zip文件 request.get(options)
- 在request请求的回调函数中获取zip文件大小并设置length参数 length: response.headers['content-length']
- 设置好length参数之后再重新request请求zip文件(否则无法获取length参数,进度信息会有误)
- 将request请求到的文件流pipe进progress-stream的实例(proStream)中去监听zip文件下载进度 request.get(options).pipe(proStream)及proStream.on('progress', function(progress){...})
- zip文件下载完成,触发zip文件的finish事件<