Node.js在没有换行符的情况下多次打印到控制台

时间:2017-06-25 11:41:55

标签: javascript node.js

我有一个应用程序用于上传文件到我的服务器,我正在使用fs并将我的文件流式传输到服务器并使用Chuck数据来跟踪文件上传进度。

此处上传示例代码:

// upload video
function uploadVideo(url,file,callback) {
    let size = fs.lstatSync(file).size;
    let bytes = 0;
    let formData = {
      file: fs.createReadStream(file).on('data', (chunk) => {
        bytes += chunk.length
        process.stdout.write(file+filesize(bytes).human()+' of '+filesize(size).human()+' Uploaded'+"\r")
      }),
    };

    request.post({url:url, json:true, formData: formData}, function optionalCallback(err, httpResponse, body) {
      if (err) {
        return callback('upload failed:', err);
      }
      callback(null,body);
    });

}

正如您所看到的,我正在使用process.stdout.write来显示上传进度而没有换行符,并且工作正常。

当我同时上传多个文件时遇到的问题,所有上传进度都在一行中被覆盖,我希望每个上传进度都在单独的行中。

多个上传示例:

let files = ['video-1.mp4','video-2.mp4','video-3.mp4','video-4.mp4','video-5.mp4']

// upload multiple file
files.forEach((file) => {
    uploadVideo(url,file,function(err,output){
        console.log(output)
    })
})

2 个答案:

答案 0 :(得分:1)

有一个包:node-progress

它给你这样的东西:

downloading [=====             ] 39/bps 29% 3.7s

答案 1 :(得分:0)

我找到了一个名为multi-progress multi-progress的软件包。 它完全符合我的要求。