简介如下:
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(); }