Как отправить изображение из серверной части в вид с помощью Node и Express? - PullRequest
0 голосов
/ 25 февраля 2019

Я получил этот фрагмент кода, отправив запрос на следующий 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 голосов
/ 25 февраля 2019

Вы пробовали 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"/>
0 голосов
/ 25 февраля 2019

Вот как я это сделал

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

const downloadImage = require('./downloadImage');

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

// URL donde se hace el request
app.get('/', (req, res) => {
   rp(options)
  .then(image => {
      return res.end(image, 'binary');
  })
  .catch(err => res.send(err));
})
0 голосов
/ 25 февраля 2019

Создайте простой API, который делает это, но с ответным изображением в base64, вызовите этот API со страницы HTML и покажите его в теге img, поскольку вы можете передать base64 непосредственно в тег img, например,

<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...