如何使用Node和Express正确地提供动态图像?

时间:2019-02-25 16:45:36

标签: node.js express

我要实现自己的目标时遇到了许多问题:

我想从此URL http://tapas.clarin.com/tapa/1990/02/22/19900222_thumb.jpg请求图像,并在视图中显示它,但我正在视图中显示它:

enter image description here

实现我想要的东西的正确方法是什么?

这是我的代码:

const app = require('express')();
var http = require('http').Server(app);
var rp = require('request-promise');
const fs = require('fs')


var url = 'http://tapas.clarin.com/tapa/1990/02/22/19900222_thumb.jpg'

app.get('/', (req, res) => {
   rp(url)
  .then(image => res.set('Content-Type', 'image/jpeg').send(image))
  .catch(err => res.send(err));
})

http.listen(3000, () => {
  console.log('listening on localhost:3000');
});

1 个答案:

答案 0 :(得分:1)

您从请求承诺中获取了一个字符串,而不是缓冲区。设置编码为null将为您提供一个缓冲区,您可以将其发送回去。

const app = require('express')();
var http = require('http').Server(app);
var rp = require('request-promise');


var options = {
    url: 'http://tapas.clarin.com/tapa/1990/02/22/19900222_thumb.jpg',
    encoding: null
}

app.get('/', (req, res) => {
   rp(options)
  .then(image => {
      return res.end(image,'binary');
  })
  .catch(err => res.send(err));
})

http.listen(3000, () => {
  console.log('listening on localhost:3000');
});