【问题标题】:Serve image in node.js fetched from another server在 node.js 中提供从另一台服务器获取的图像
【发布时间】:2014-10-30 16:31:11
【问题描述】:

我觉得这应该足够简单,但我无法完成这项工作。我有一个前端点击的 URL。这会触发节点从另一台服务器获取图像。接下来我希望节点将图像作为响应发送。这部分不适合我。

render: function(img,response){
    request.get(URL, function (error, res, body) {
        if (!error && res.statusCode == 200) {
            response.setHeader('Content-Type', 'image/png');
            response.writeHead(200);
            response.write(body);
            response.end();
        }
    });
}

我应该改为缓冲图像吗?

仅供参考,我正在尝试这样做,因为我需要在 src 路径中检索作为身份验证凭据的图像,并且我不希望将这些图像暴露给用户。因此,如果您认为有比我尝试的更好的解决方案,请随时提出建议。 :)

谢谢!

【问题讨论】:

    标签: javascript node.js image rendering


    【解决方案1】:

    如果有人正在寻找答案而上述方法对您不起作用,请尝试这样的请求模块。

    首先包含模块

    var request = require('request')
    

    然后:

    request.get(URL, {encoding:'binary'},function(error, response){
                 res.writeHead(200, {'Content-Type': 'image/jpeg', 'Cache-Control': 'no-cache' });
                 res.end(response.body, 'binary');
            });
    

    这将绕过 URL 中的图像并将其打印到响应中。

    【讨论】:

      【解决方案2】:

      这应该可以正常工作,但是您遗漏了一个重要部分,将数据写回响应:)

      你只需要添加:

      response.write(body); 
      response.end(); 
      

      写完标题之后。

      【讨论】:

      • 感谢 aqidanok!我尝试添加它(我之前有它,但忘记了我已经简单地删除了它),但它仍然无法正常工作。还有什么想法吗?
      • 不确定,我会使用 curl 或类似工具来检查浏览器外部的响应,看看发生了什么。
      猜你喜欢
      • 2012-02-20
      • 2011-11-11
      • 1970-01-01
      • 2013-01-02
      • 1970-01-01
      • 2016-05-23
      • 2018-04-12
      • 2016-03-30
      • 2011-12-12
      相关资源
      最近更新 更多