2016-03-07 55 views
0

我对JavaScript和Node JS真的很陌生。我有我想要缓冲的各种图像URL。我已经尝试了请求npm模块,但想要实现我想要的更低级别的库。如何使用本机Node JS HTTP库将图像写入缓冲区?

例如: http://assets.loeildelaphotographie.com/uploads/article_photo/image/128456/_Santu_Mofokeng_-_TOWNSHIPS_Shebeen_Soweto_1987.jpg

我看到很多examples使用request module或实例的文件保存到磁盘建议。但是,我找不到一个简单缓冲图像的HTTP GET请求示例,所以我可以传递给另一个函数。它需要有一个“结束”事件,所以我可以在另一个步骤中放心地上传缓存的图像数据。有人可以提供样本模式或“如何”吗?谢谢!

回答

0

这是土办法:(二进制响应encoding:null

var http=require('http'), imageBuffer; 

http.get(
    'http://www.kame.net/img/kame-anime-small.gif', 
    function(res) { 
    var body=new Buffer(0); 

    if (res.statusCode!==200) { 
     return console.error('HTTP '+res.statusCode); 
    } 

    res.on('data', function(chunk) { 
     body=Buffer.concat([body, chunk]); 
    }); 

    res.on('end', function() { 
     imageBuffer=body; 
    }); 

    res.on('error', function(err) { 
     console.error(err); 
    }); 
    } 
); 

// Small webserver serving the image at http://127.0.0.1:4567 
http.createServer(function(req, res) { 
    res.write(imageBuffer || 'Please reload page'); 
    res.end(); 
}).listen(4567, '127.0.0.1'); 

和使用要求:

var request=require('request'), imageBuffer; 

request({ 
    uri: 'http://www.kame.net/img/kame-anime-small.gif', 
    encoding: null 
}, function(err, res, body) { 
    if (err) { 
    return console.error(err); 
    } else if (res.statusCode!==200) { 
    return console.error('HTTP '+res.statusCode); 
    } 
    imageBuffer=body; 
}); 

// Small webserver serving the image at http://127.0.0.1:4567 
require('http').createServer(function(req, res) { 
    res.write(imageBuffer || 'Please reload page'); 
    res.end(); 
}).listen(4567, '127.0.0.1'); 
+0

这是否也适用于本机HTTPS请求?我可以使用本地'https'库同时获得'http'和'https'请求吗?换句话说,我可以将'http' URLs传递给'https'library吗? – filmplane

0

下面是使用一个简单的例子内置的流式HTTP响应有:

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

var file = fs.createWriteStream("test.png"); 
var request = http.get("some URL to an image", function(response) { 
    response.pipe(file); 
}); 

I ra自己并成功从外部网站下载图像并将其保存到文件中,然后将该文件加载到浏览器中以查看相同的图像。

相关问题