【问题标题】:node.js express external image push to clientnode.js 将外部图片推送到客户端
【发布时间】:2014-01-05 08:24:24
【问题描述】:

我对此感到非常难过。如果我有一个外部图片网址。例如,这是来自 IMDb.com 的图片 url,http://ia.media-imdb.com/images/M/MV5BMTMyMzA5ODIzMV5BMl5BanBnXkFtZTcwNzE2NDM1Mw@@._V1_SY317_CR52,0,214,317_.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 + '"/>');
});

【问题讨论】:

标签: javascript image node.js express


【解决方案1】:

IMDB 为该图像 URL 返回 403(禁止)HTTP 状态。我的猜测是 IMDB 正在根据请求的引用者阻止图像。这通常用于防止对资源的深度链接,因此一个网站不能“窃取”其他网站的带宽/内容。即使this JSFiddle 显示损坏的图像,但直接在浏览器中加载图像 URL 是有效的。

<img src="http://ia.media-imdb.com/images/M/MV5BMTMyMzA5ODIzMV5BMl5BanBnXkFtZTcwNzE2NDM1Mw@@._V1_SY317_CR52,0,214,317_.jpg"/>

解决方案是不使用 IMDB 图像,因为它们无法用于公共链接。

【讨论】:

  • 我会赞成这个答案,但我需要 15 或更高的声誉!我知道这是延迟回复,但谢谢!
【解决方案2】:

试试这个:
res.write('&lt;img src="http://ia.media-imdb.com/images/M/MV5BMTMyMzA5ODIzMV5BMl5BanBnXkFtZTcwNzE2NDM1Mw@@._V1_SY317_CR52,0,214,317_.jpg"&gt;');

图像标签是自闭合的。没有结束标签。

【讨论】:

    猜你喜欢
    • 2011-05-20
    • 1970-01-01
    • 2011-10-09
    • 2013-11-17
    • 2011-09-16
    • 1970-01-01
    • 2018-12-29
    • 2013-03-05
    • 1970-01-01
    相关资源
    最近更新 更多