node.js表示将外部图像推送到客户端
node.js express external image push to client
我在这方面遇到了很大的困难。如果我有一个外部图像url。例如这是来自IMDb.com的图片url,http://ia.media-imdb.com/images/M/MV5BMTMyMzA5ODIzMV5BMl5BanBnXkFtZTcwNzE2NDM1Mw@@_V1_SY317_CR52,0214317_.jpg。如何将此图像发送到客户端?
目前,我正在做:
res.write('<img src="/http://ia.media-imdb.com/images/M/MV5BMTMyMzA5ODIzMV5BMl5BanBnXkFtZTcwNzE2NDM1Mw@@._V1_SY317_CR52,0,214,317_.jpg"></img>');
但它并没有显示出来,我只是得到了一个破碎的图像。
更新:
我最终这样做是为了让它发挥作用:
var url = http://ia.media-imdb.com/images/M/MV5BMTMyMzA5ODIzMV5BMl5BanBnXkFtZTcwNzE2NDM1Mw@@._V1_SY317_CR52,0,214,317_.jpg;
var loadBase64Image = function (url, callback) {
var request = require('request');
request({url: url, encoding: null}, function (err, res, body) {
if (!err && res.statusCode == 200) {
var base64prefix = 'data:' + res.headers['content-type'] + ';base64,'
, image = body.toString('base64');
if (typeof callback == 'function') {
callback(image, base64prefix);
}
} else {
throw new Error('Can not download image');
}
});
};
loadBase64Image(imageUrl, function (image, prefix) {
res.write('<img src="' + prefix + image + '"/>');
});
IMDB返回该图像URL的403(禁止)HTTP状态。我的猜测是IMDB正在根据请求的推荐人屏蔽图像。这通常用于防止与资源的深度链接,这样一个网站就不能从其他网站"窃取"带宽/内容。即使这个JSFiddle也显示了一个损坏的图像,但直接在浏览器中加载图像URL是有效的。
<img src="http://ia.media-imdb.com/images/M/MV5BMTMyMzA5ODIzMV5BMl5BanBnXkFtZTcwNzE2NDM1Mw@@._V1_SY317_CR52,0,214,317_.jpg"/>
解决方案是不使用IMDB图像,因为他们不提供公共链接。
试试这个:res.write('<img src="http://ia.media-imdb.com/images/M/MV5BMTMyMzA5ODIzMV5BMl5BanBnXkFtZTcwNzE2NDM1Mw@@._V1_SY317_CR52,0,214,317_.jpg">');
图像标签是自动关闭的。没有结束标记。
相关文章:
- 客户端图像调整大小.任何已知问题
- 使用send时,jquery文件上传不调整图像客户端的大小
- 在客户端上传之前调整图像大小,在IE9上无需Flash
- 为什么我不能在 Django Web 应用程序中使用客户端相机拍摄图像快照
- 在客户端调整图像大小/裁剪图像的最佳方式是什么
- 如何在客户端存储动态图像
- node.js表示将外部图像推送到客户端
- 遵循重定向的图像HTTP请求,客户端
- websocketapi-图像编码在客户端不产生任何图像类型
- 奇怪的客户端图像的高度行为
- 客户端图像调整大小并保存
- 客户端图像操作(裁剪)
- 为什么浏览器/客户端图像大小调整会对性能造成如此大的影响?
- 客户端图像分辨率/尺寸验证
- IE -如何读取客户端图像文件作为base64
- HTML/javascript客户端图像压缩看起来像一个合理的、万无一失的计划吗?
- 调整客户端图像的大小,并将其与表单数据一起传递给asp MVC控制器
- 客户端图像处理
- 客户端图像质量降低
- 使用jquery获取动态图像的客户端图像宽度