node中如何读取远程的图片并显示出来?
用的是express框架,读取https://pin.aliyun.com/get_img?sessionid=1这个图片的内容,用http://localhost/identify 把图片显示出来,代码如下,运行后图片显示框框,没显示出图片:
router.get('/identify',function(req,res,next){
var opts={
url:'https://pin.aliyun.com/get_img?sessionid=1'
}
request.get(opts, function (err, response, body) {
var type = response.headers["content-type"];
res.writeHead(200,{"Content-Type":type});
res.write(body);
res.end();
})
})
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
多加点日志打印调试一下
这个问题是使用request导致的,看request的源码中readResponseBody处理的部分,有一段这个
如果self.encoding是undefined时候,也进入了这段逻辑,导致编码错误了
因此调用的时候,必须强制指定encoding为null,文档中也有说明
encoding - encoding to be used on setEncoding of response data. If null, the body is returned as a Buffer. Anything else (including the default value of undefined) will be passed as the encoding parameter to toString() (meaning this is effectively utf8 by default). (Note: if you expect binary data, you should set encoding: null.)
改成这样就行了
router.get('/identify',function(req,res,next){
})