2

ノード webkit でダウンロードされたファイルに基づいて進行状況バーを表示するにはどうすればよいですか?

var https = require('https');
var fs = require('fs');
var exec = require('child_process').exec;

var file = fs.createWriteStream("update_setup.exe");
var len = 0; 
var request = https.get(url + 'appdata/update_setup.exe', function (response) {
  response.pipe(file);
  response.on('data', function (chunk) {
    file.write(chunk);
    len += chunk.length;
    var percent = (len / response.headers['content-length']) * 100;
  });
  file.on('finish', function () {
    setTimeout(function () { win.close(); exec('update_setup.exe'); }, 1000);
  });
});
4

1 に答える 1

1

応答のヘッダーを読み取り、content-length既にダウンロードされているバイト数と比較します。

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

var file = fs.createWriteStream('dest');
var len = 0;

http.get(url, function(res) {
  res.on('data', function(chunk) {
    file.write(chunk);
    len += chunk.length;

    // percentage downloaded is as follows
    var percent = (len / res.headers['content-length']) * 100;
  });
  res.on('end', function() {
    file.close();
  });
  file.on('close', function() {
    // the file is done downloading
    exec('update_setup.exe');
  });
});

このコードは、受信したデータの長さをチェックし、それを に追加しlenます。ファイルの合計サイズで割りlen、100 を掛けてパーセンテージを取得します。

于 2013-10-10T03:27:02.763 に答える