Node.js 实时显示文件下载进度并支持取消下载
2021/7/17 20:06:20
本文主要是介绍Node.js 实时显示文件下载进度并支持取消下载,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Nodejs功能模块:
简介如下:
https => 建立远程网络连接
request => 用来请求资源
progress => 实时获取下载进度
fs => 用来创建读写流
详情请查询Nodejs官网:http://nodejs.cn/api/http.html
代码如下:
/** * 将远程资源下载到指定目录 * @param {String} fileName 文件名 * @param {String} remoteUrl 远程路径 * @param {String} outPutPath 本地输出路径 * @param callback '() => {}'; */ let downloadRequest = null; export let _remoteFile2Local = (fileName, remoteUrl, outPutPath, callback) => { https.get(remoteUrl + fileName, (res) => { if (res.statusCode === 200) { res.setEncoding(null); // 设置编码 let str = progress({ length: res.headers['content-length'], time: 500 /* ms */ }); str.on('progress', function (progress) { console.log('percentage:', progress.percentage) // 下载进度 }); let url = remoteUrl + fileName; // 远程文件下载地址 let globalRequest = request.get({url: url, encoding: null}, (err, requestRes, body) => { if (err) throw err callback && callback(); }); // 两个pip(通道) => 下载进度监控、存储到本地路径 globalRequest.pipe(str).pipe(fs.createWriteStream(path.join(outPutPath, fileName))); downloadRequest = globalRequest; // 用于取消下载 } else { console.log('远程地址出错:', res.statusMessage); } }) } /** * 取消下載 * @param callback '() => {}'; */ export let _abortDownload2 = (callback) => { downloadRequest.abort(); // 停止网络请求 // to do 删除本地已经下载的文件/夹 callback && callback(); }
这篇关于Node.js 实时显示文件下载进度并支持取消下载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-09vue3开发前端表单缓存自定义指令,移动端h5必备插件
- 2024-05-09React Hooks在class组件中的使用方式
- 2024-03-30[OIDC in Action] 2. 基于OIDC(OpenID Connect)的SSO(纯JS客户端)
- 2024-03-29terraform jsonencode
- 2024-03-13vuex-persist
- 2024-03-11icons for vue
- 2024-03-07breadcrumbs react js
- 2024-03-06react login page example
- 2024-03-06react router uselocation
- 2024-03-04postgres jsonb_set