【问题标题】:Sending an image by http with node.js使用 node.js 通过 http 发送图像
【发布时间】:2012-07-27 06:45:15
【问题描述】:

我正在尝试使用 node.js 通过 HTTP 发送图像。

我可以发送 HTML、文本,但不能发送图像。

这是我正在尝试做的一个示例:

request(options, function(error, response, body) {
    http.createServer(function(req, res) {
        res.statusCode = response.statusCode;
        res.writeHead(res.statusCode, { 'Content-Type': response.headers['content-type'] });
        res.write(body);
        res.end();
    }
});

我得到的只是:

当我尝试一个图标时也会发生同样的情况......

如果我wget 图像我猜我得到了正确的内容,但它也没有显示在图像查看器中......我不知道如何解决这个问题。

有什么想法吗?

谢谢!

【问题讨论】:

  • 问题可能出在body。里面有什么?您确定这是一张有效的PNG图片吗? res.statusCode 中有什么内容?我想你的意思是把200 放在那里,是吗?
  • 我更新了这个例子,你可以看看我是怎么做的。
  • 真的要下载图片吗?你不能把它的原始src放在img标签中吗?
  • 另外,你就不能res.writeHead( response.headers )吗?
  • @FlorianMargaine,它的目的是成为代理,所以是的,我必须通过整个事情。

标签: image node.js mime-types


【解决方案1】:

确保body 是一个缓冲区,而不是图像的编码表示(除非它的编码方式使普通浏览器可以在您发送适当的Content-Encoding 标头时对其进行解码,在这种情况下您应该(你猜对了!)发送适当的标题。

特别是,不要尝试使用 fs.* 方法读取图像,在这些方法中您要求响应为 UTF-8,然后尝试“原始”发送。

【讨论】:

  • 我实际上是通过request 得到它,并且我使用的标头与请求发送给我的标头相同。有什么想法吗?
猜你喜欢
  • 2013-02-06
  • 2011-05-08
  • 1970-01-01
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 2020-06-20
  • 2012-11-14
  • 1970-01-01
相关资源
最近更新 更多