• node.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 = 0;
        
            var out = fs.createWriteStream(dirName + "/" + fileName);
            res.on('data', function (chunk) {
                
                downLength += chunk.length;
                var progress =  Math.floor(downLength*100 / 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('下载地址','本地存储路径','文件名');
      
  • 相关阅读:
    数组名和指针区别(还有数组退化等)
    无法从“const char *”转换为“char *”
    c语言数组初始化问题
    c语言实现atoi和itoa函数。
    不使用临时变量交换两个整数
    hdu 1282回文数猜想
    Android仿WIN8系统磁贴点击下沉倾斜效果
    Android Studio使用心得
    处理json中影响解析的多余引號
    我也来开发2048之主界面设计
  • 原文地址:https://www.cnblogs.com/ytxiao/p/9070591.html
Copyright © 2020-2023  润新知