1
nodejsのリクエストモジュールを使用してURLを取得していますが、サーバーのダウンロードが完了したときにURLからファイル(+ 200mb)クラッシュするか遅くなるまで減速を開始します。NodeJSでURLから大きなファイルをダウンロードするときにサーバーがクラッシュする
はここに私の現在のコードだ(それはファイル全体をダウンロードしますが、最終的には私のサーバーがクラッシュした):
//Required modules
var http = require('http'),
url = require("url"),
fs = require('fs'),
request = require('request'),
path = require("path"),
events = require("events"),
j = request.jar(),
request = request.defaults({ jar : j });
// make te request login in with cookies
console.log("downloading file :)");
request({
url:"http://example.com/",
method:"POST",
form:{u: "username",p: "password"}
},
function(error,response,body){
setTimeout(function(){
request
.get('http://example.com/test.ashx?file=15')
.on('error', function(err) {
console.log(err);
})
.pipe(fs.createWriteStream("/var/www/filesDir/CustomName.zip"));
console.log(body);
},1000)
}
);
私はthis answerから別の溶液を塗布しようとしたが、何らかの理由でファイルが正しくダウンロードされていませんそれは、常に "ダウンロードの進捗状況:0バイト"だけを示しているかもしれません。これはログインアクセスに関連するものかもしれません。
var http = require('http');
var fs = require('fs');
var url = require("url");
var request = require('request');
var path = require("path");
var events = require("events");
var j = request.jar();
var request = request.defaults({ jar : j });
request({
url:"http://example.com/",
method:"POST",
form:{u:"username",p:"password"}
}, function(error,response,body){
var downloadfile = "http://example.com/test.ashx?file=15";
var host = url.parse(downloadfile).hostname;
var filename = "1977.zip";
var req = http.request({port: 80, host: host, method: 'GET'});
console.log("Downloading file: " + filename);
console.log("Before download request");
req.end();
dlprogress = 0;
setInterval(function() {
console.log("Download progress: " + dlprogress + " bytes");
}, 1000);
req.addListener('response', function (response) {
var downloadfile = fs.createWriteStream(filename, {'flags': 'a'});
console.log("File size " + filename + ": " + response.headers['content-length'] + " bytes.");
response.addListener('data', function (chunk) {
dlprogress += chunk.length;
downloadfile.write(chunk, encoding='binary');
});
response.addListener("end", function() {
downloadfile.end();
console.log("Finished downloading " + filename);
});
});
}
);
あなたが私を助けることにしたどの方法もかまいません:
は、ここで私は私が最後の文から実装しようとしている他のコードを置きます。