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