Node.js http.request 接收大檔案方法
感謝Benson大的實戰經驗,解救了小弟一晚的睡眠時間!!
下面是Node.js在使用http.request抓遠端資料
針對資料量比較大的回傳時候的處理方式
主要是http.request在截取資料時候會分段處理
一般,如果照官方網站提供的直接在req.on('data')區段把chunk值回傳的話
則在大檔案的傳輸會被劫斷
而大檔案的時候,req.on('data')實際上會跑多次(跑到結果收完為止)
因此另外設置data參數接續接收每個區段的回傳值
然後在req.on('end')區段再把整個data回傳... 大功告成!
由衷的感謝Benson大的傳授∼又多學會一招!function doRequest(path, callback) {
console.log('\n---------------http.request start-----------------');
console.log('path: ' + path);
var options = {
host : 'xxx.xxx.xxx.xxx',
port : '80',
path : path,
method : 'GET'
};
var dopost_req = http.request(options, function(res) {
var statusCode = res.statusCode;
var hearders = JSON.stringify(res.headers);
console.log('>>>Status : ' + statusCode);
console.log('>>>Hearder : ' + hearders);
res.setEncoding('utf-8');
var data = '';
res.on('data', function(chunk) {
console.log('>>>chunk : ' + chunk);
data += chunk;
});
res.on('end',function(){
callback(statusCode,hearders,data);
})
});
dopost_req.on('error', function(e) {
console.log('>>>>problem with request: ' + e.message);
});
dopost_req.write('data\n');
dopost_req.write('data\n');
dopost_req.end();
}