Гибри sh при получении изображения и отправке клиенту - PullRequest
0 голосов
/ 09 мая 2020

На моем сервере я читаю изображение - jpg - с URL-адреса с:

        let _uri = "https.....xxxxxxxxxxx.jpg";

        let _headers = {
          'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
              'Accept-Encoding': '*',
              'Accept-Language': 'en-US,en',
              'Cache-Control': 'max-age=0',
              'Connection': 'keep-alive',
              'Referer': 'http://www.google.com/',
              'Upgrade-Insecure-Requests': '1',
              'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
        }


        var options = {
            uri: _uri,
            headers: _headers
        };

        rp(options)
            .then(parsedBody => {
               //response.setHeader('Content-Type', 'image/jpg');
              //  return response.status(200).send(parsedBody);  //** don't work also
              return response.json(parsedBody);
            })
            .catch(err => {
                response.status(400).send(err)
            });

    });

Независимо от того, что я пробую, это приведет к огромному куску мусора, когда я проверю ответ. Я не могу узнать, что это за тип данных.

На клиенте я получаю их - опять же - много джибри sh:

 fetch('https://...my server')
  .then(res => res.blob())
  .then(blob => {
       console.log(blob);

Как мне получить эту фотографию на сервере и отправить клиенту?

1 Ответ

1 голос
/ 09 мая 2020

Добавьте параметр encoding: null, чтобы ответ возвращался как Buffer

var options = {
  uri: _uri,
  headers: _headers,
  encoding: null // add this line
}

Затем вы можете просто отправить буфер как ответ

rp(options)
  .then(buffer => {
    response.setHeader('Content-Type', 'image/jpg');
    return response.status(200).send(buffer);
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...