Как получить png-изображение с помощью приложения nodejs express для вызова API - PullRequest
1 голос
/ 04 июля 2019

Мне нужно иметь возможность возвращать изображение png из конечной точки API и API через приложение nodejs express.

При попытке вернуть файл изображения / SVG, он возвращается и отображает, как ожидалось. Но когда я пытаюсь использовать png-файл, я получаю какой-то плохо закодированный текст, например:

�PNG  IHDR\���IDATx�]�U��:Ӂ�.��*��������]�{�A�A�(�� �\���1���   �� A@6���$�(�CXX|d��IUu�dz�渤�g��u�����sO�1��g��W�����~fv��+�TL�z�qןc��e��;��{��狿

Вот код, который у меня сейчас есть:

const express = require('express')
const request = require('request-promise')
const port = 3000
const exphbs = require('express-handlebars')
const app = express()

const options = {
  method: 'GET',
  uri: 'https://www.google.co.uk/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png',
  headers: {
    'Accept': 'image/png',
    'Content-Type': 'image/png'
  }
}



app.get('/', (request, response) => {
    test(response)
})

app.listen(port, (err) => {
  if (err) {
    return console.log('something bad happened', err)
  }
  console.log(`server is listening on ${port}`)
})


function test(resp){
 return request(options).then((data)=>{
    resp.header('Content-Type', options.headers['Content-Type']).send(data);
  }).catch((err) => {
      console.log(err)
      data.render('error')
})
}

1 Ответ

1 голос
/ 05 июля 2019

Решение моей проблемы здесь. Благодаря @LawrenceCherone

const express = require('express')
const request = require('request-promise')
const port = 3000
const exphbs = require('express-handlebars')
const app = express()

const options = {
  method: 'GET',
  uri: 'https://www.google.co.uk/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png',
  headers: {
    'Accept': 'image/png'
  }
}

app.get('/', (request, response) => {
    response.setHeader('Content-Type', 'image/png')
    makeRequest(response)
})

app.listen(port, (err) => {
  if (err) {
    return console.log('something bad happened', err)
  }
  console.log(`server is listening on ${port}`)
})


function makeRequest(resp){
    request(options.uri, options).pipe(resp)
}
...