从外部web服务获取图像并将其传递到另一个express js路由
Get image from external web service and pass it to another express js route
我有一个外部web服务,它返回图像。
我有节点快速路由,它调用外部web服务。
我正在努力将外部web服务的返回对象(即图像)作为快递路线的返回对象
这是一个例子,我试图从外部URL获取图像,并按原样传递它。它不起作用,有人能帮我知道吗?
exports.getImage = function (req, res) {
var http = require('http');
var options = {
host: 'http://www.gettyimages.co.uk',
path: '/CMS/StaticContent/1391099215267_hero2.jpg',
method: 'GET',
headers: {
"content-type": "image/jpeg"
}
};
var request = http.request(options, function(response) {
var imagedata = '';
response.setEncoding('binary');
response.on('data', function(chunk){
imagedata += chunk
});
response.on('end', function() {
console.log('imagedata: ', imagedata);
res.writeHead(200, {'Content-Type': 'image/jpeg' });
res.send(imagedata);
});
}).on("error", function(e) {
console.log("Got error: " + e.message, e);
});
request.end();
};
现有代码的问题是,当您向res.send()
传递字符串时,它默认为非二进制编码,因此您的数据最终会因此而损坏。
其次,最好只是流式传输数据,这样就不会每次都在内存中缓冲整个图像。示例:
var request = http.get(options, function(response) {
res.writeHead(response.statusCode, {
'Content-Type': response.headers['content-type']
});
response.pipe(res);
}).on("error", function(e) {
console.log("Got error: " + e.message, e);
});
最后,host
的值是错误的,它应该只是主机名(没有方案):www.gettyimages.co.uk
。此外,在请求headers
中设置"content-type": "image/jpeg"
没有意义(可以删除),因为您在请求中没有发送jpeg图像。
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 使用clickToggle并在单击另一个元素时关闭元素
- 使用javascript将动态表从一个html页面打印到另一个html页
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 无法从jquery Mobile导航栏重定向到另一个页面
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 如何使用javascript express node将变量从控制器中的一个方法公开.js到另一个控制器.js
- 从外部web服务获取图像并将其传递到另一个express js路由
- 如何将app=express()传递到另一个模块中
- NodeJS,express:将数据从一个页面发布到另一个页面
- Node.js-每个Express请求的域,位于另一个域内
- 如何在蓝鸟承诺中修改 express.res,并在另一个承诺中使用 res
- Express node.js从node路由向另一个服务器发出get请求
- 另一个express.js请求.会话不存储数据
- 将app = express()传递给另一个模块是否与请求该模块相同?