如何使用Node和Express从后端将图像发送到视图?

时间:2019-02-25 14:08:59

标签: javascript node.js express

我有这段代码向以下URL发出请求,并获得图像作为对诺言的响应。 然后,我将该图像登录到控制台,因为它在控制台中是二进制文件,所以我认为它可以正常工作。

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

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

  headers: {
      'User-Agent': 'Request-Promise'
  },
  json: true // Json parse
};

rp(options)
  .then( res => {
    console.log(res)
  })
  .catch(function (err) {
      console.log(err)
  });

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

我需要代替将图像打印到控制台中,而是在视图中显示它,但是我无法做到,已经尝试了一切。

干什么?

我正在尝试制作一个机器人,以不同的参数击中URL,并在每次击中URL时将图像重新带回去,那么我需要对每个图像进行其他操作。

这是我的简单观点。

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Tapas Clarin</title>
</head>
<body>

    <div id="tapas">
        <!-- Acá quiero mostrar la imagen -->
    </div>
    <script src="./app.js"></script>
</body>
</html>

3 个答案:

答案 0 :(得分:1)

创建一个执行此操作的简单API,但是在base64中提供响应图像,从HTML页面调用该API,并在img标签中显示它,因为您可以像这样直接在img标签中传递base64

<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD">

答案 1 :(得分:1)

您尝试过res.send(img)吗?

例如,如果您的API端点为/image,则您的代码可能类似于:

app.get('/image', (req, res) => {
  rp(options).then(img => res.send(img))
    .catch(err => console.log(err));
});

然后在您的HTML客户端上:

<img src="/image"/>

答案 2 :(得分:1)

这就是我最终这样做的方式

GDB configure