NodeJS下载文件并显示下载进度
const fs = require('fs'); const request = require("request") const progress = require('progress-stream') const https = require("https") const http = require("http") /* 下载文件 @param url 文件地址 @param targetUrl 存储地址 */ async function downloadUrlFile(url, targetUrl) { let stream = fs.createWriteStream(targetUrl) let p = await setDownloadProgress(url) return new Promise(function (resolve, reject) { request(url).pipe(p).pipe(stream).on('close', function () { winston.info(targetUrl + '下载完毕'); resolve(targetUrl) }); }) } /* 获取文件大小 */ async function getUrlFileSize(url) { return new Promise(r => { let h = {http, https} let isHttps = url.indexOf("https") != -1 h[isHttps ? "https" : "http"].get(url, { rejectUnauthorized: false }, (res) => { r(res.headers['content-length']) }) }) } /* 设置下载进度 */ async function setDownloadProgress(url) { let p = progress({ length: await getUrlFileSize(url), time: 500 }) p.on('progress', progress => { console.log("下载进度:", progress.percentage) }); return p }
作者:冲锋的麦克
出处:https://www.cnblogs.com/zhangwenju/p/16921044.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示