节点+快速路由器 - 返回图像

时间:2015-12-01 20:33:33

标签: node.js express

我正在构建一个imgur镜像 - 即如果有人想在我的域上查看imgur.com/asdf.jpg,他们只需访问mydomain.com/asdf.jpg即可打开图像。这是我到目前为止的代码片段;但是,它要求我下载文件,而不是在浏览器中将其作为图像输出。寻求这个问题的帮助。感谢。

var express = require('express');
var request = require('request');
var router = express();

  router.get('/*', function(req, res) {

      var image = "http://i.imgur.com/"+req.params[0];
      console.log(image); // captures correctly the image name
      request
      .get(image)
      .on('response', function(response) {
        res.writeHead(response.statusCode, "{\'Content-Type: \'"+response.headers['content-type']+"\'}");
      })
      .pipe(res);
  });

... some server stuff

1 个答案:

答案 0 :(得分:1)

如果问题在于设置内容类型,您可以使用以下代码设置内容类型:

res.set('Content-Type', 'image/jpeg');

或者您可以使用:

res.sendFile(fileName, options, function (err) {
    if (err) {
        console.log(err);
        res.status(err.status).end();
    }
    else {
       console.log('Sent:', fileName);
   }
});

根据文件扩展名将内容类型设置为docs suggest