Node.js之文件下载,主要最近解决我的一个需求。

需求描述:
如何将腾讯云上传的文件存储到本地某个目录下,如果用js来实现,纯JavaScript没有这样的功能(也许有),正好我这个项目用node.js比较多,正好可以利用node.js丰富的API实现该功能。

如下示例代码,演示下载远程文件:

源码如下(download.js):

//下载参数
var http = require("http");
var fs = require("fs");
var path = require("path");
var downFlag = false;
var downUrl = '';
var downFileName = ''; /**
* 下载回调
*/
function getHttpReqCallback (imgSrc, dirName, fileName) { var callback = function(res) {
console.log("request: " + imgSrc + " return status: " + res.statusCode);
var contentLength = parseInt(res.headers['content-length']); var downLength = ; var out = fs.createWriteStream(dirName + "/" + fileName);
res.on('data', function (chunk) { downLength += chunk.length;
var progress = Math.floor(downLength* / contentLength);
var str = "下载:"+ progress +"%";
console.log(str); //写文件
out.write(chunk, function () {
//console.log(chunk.length); }); });
res.on('end', function() {
downFlag = false;
console.log("end downloading " + imgSrc);
if (isNaN(contentLength)) {
console.log(imgSrc + " content length error");
return;
}
if (downLength < contentLength) {
console.log(imgSrc + " download error, try again");
return;
}
});
}; return callback;
} /**
* 下载开始
*/
function startDownloadTask (imgSrc, dirName,fileName) {
console.log("start downloading " + imgSrc);
var req = http.request(imgSrc, getHttpReqCallback(imgSrc, dirName, fileName));
req.on('error', function(e){
console.log("request " + imgSrc + " error, try again");
});
req.end();
} startDownloadTask('http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.41/bin/apache-tomcat-8.5.41.tar.gz','D://1024Workspace//extension','apache-tomcat-8.5.41.tar.gz'); //startDownloadTask('下载地址','本地存储路径','文件名');

代码经过测试,没有问题。

本文主要参考资料如下:
Node.js文件下载

最新文章

  1. JAVA NIO学习笔记1 - 架构简介
  2. 脚本工具(获取某个文件夹下的所有图片属性批量生成css样式)
  3. js中的 || 与 &amp;&amp; 运算符 的使用
  4. PLSQL_性能优化工具系列16_Best Practices: Proactively Avoiding Database
  5. iOS开发——扫描二维码——工具类
  6. 借用Toad 生成表空间的使用量图示
  7. POJ 1845
  8. json处理三部曲之第三曲:利用Gson处理json
  9. [Luogu 1559]运动员最佳匹配问题
  10. 【Linux】Linux主要目录以及说明
  11. 自签名证书 nginx tomcat
  12. Linux学习笔记:常用100条命令(一)
  13. Java项目持续集成检查项
  14. nyoj-1367-河南省第十一届省赛-E物流配送-最小费用流
  15. mac苹果ping不通网络
  16. L206
  17. 【BZOJ4154】Generating Synergy【kd树】
  18. JAVA验证身份证号码是否合法
  19. L2-017. 人以群分
  20. 【转】百亿级实时大数据分析项目,为什么不用Hadoop?

热门文章

  1. number与string的转换
  2. mkimage命令
  3. 笔谈OpenGL ES(三)
  4. oracle 删除表空间
  5. Oracle IMP-00010 不是有效的导出文件,标头验证失败 解决方法
  6. oracle更改数据库字符集
  7. centos6/7添加系统服务
  8. istio-1.1.6镜像列表
  9. [2019/05/17]解决springboot测试List接口时JSON传参异常
  10. Linux secureCRT 介绍和安装和优化