Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在nwjs中下载文件时如何显示进度条_Javascript_Node.js_Nwjs - Fatal编程技术网

Javascript 在nwjs中下载文件时如何显示进度条

Javascript 在nwjs中下载文件时如何显示进度条,javascript,node.js,nwjs,Javascript,Node.js,Nwjs,我正在创建一个NWJS应用程序,它需要从url下载一些文件,我需要显示一个进度条来显示下载进度 我目前的代码只是下载文件,但没有显示和更新进度条,我想知道如何做到这一点 var fs = require('fs'); var https = require('https'); var file = fs.createWriteStream(filepath); var request = https.get(fileurl, function (response) { respons

我正在创建一个NWJS应用程序,它需要从url下载一些文件,我需要显示一个进度条来显示下载进度

我目前的代码只是下载文件,但没有显示和更新进度条,我想知道如何做到这一点

var fs = require('fs');
var https = require('https');

var file = fs.createWriteStream(filepath);

var request = https.get(fileurl, function (response) {
    response.pipe(file);
    $('#progressbar_upload').addClass('bg-success');
    uploadDone();
});
这只是下载文件,然后在下载完成后更改进度条的颜色。我希望它改变进度条的宽度,以便在下载时显示下载进度


提前谢谢

您可以从
响应
中检查总的
内容长度
,以获得总下载大小,以及它何时返回
数据
数据
事件。最后,您可以得到它的长度,并可以计算下载百分比,如下所示:

var fs = require('fs');
var https = require('https');

var file = fs.createWriteStream(filepath);

var contentLength;
var length;
var responseData = '';
var request = https.get(fileurl, function (response) {
    contentLength = parseInt(response.headers['content-length']); // in bytes
    length = [];

    // Grab the data buffer of the request
    response.on('data', (d) => {
        responseData += d;
        length.push(d.length);
        let sum = length.reduce((a, b) => a + b, 0);
        let completedParcentage = (sum / contentLength) * 100;
        console.log(`completed reading ${sum} bytes out of ${contentLength} bytes`);
        console.log(`${completedParcentage} percentage of download complete`);

        // Modify this to alter the width of progress-bar using percentageCompleted
        $('#progressbar_upload').addClass('bg-success');
    });

    response.on('end', () => {
        file.write(responseData);
        uploadDone();
    })

});

这是行不通的。似乎response.on('end')没有触发。当
数据
发送到
数据
事件时,您将获得下载完成百分比,您需要在
数据
事件中使用计算的
完成部分
来更改
进度条
宽度。