myTest532 myTest532
myTest532 myTest532

Reputation: 2381

NodeJS Axios request returning an odd string

I'm sending a GET request to a third party API and it is returning a odd string (supposed to be an image).

axios.get(`${URL}/test`, {
    headers: {
        'Content-Type': 'application/json',
    },
    auth: {
        username: USERNAME,
        password: PASSWORD
    },
    responseType: 'blob'
})
.then(async (response) => {
    console.log(response.data)
    return res.json(response.data);
})
.catch((err) => {
    console.log(err);
    return res.json("ERROR");
});

The response is: "����\u0000\u0010JFIF\u0000\u0001\u0001\u0000\u0000\u0001\u0000\u0001\u0000\u0000��\u0000C

How can I convert it to an image or image/url?

Thanks

Upvotes: 0

Views: 516

Answers (1)

Swaraj Gandhi
Swaraj Gandhi

Reputation: 714

You can try this

const Fs = require('fs')  
const Path = require('path')  
const Axios = require('axios')

async function downloadImage () {  
  const url = 'https://unsplash.com/photos/AaEQmoufHLk/download?force=true'
  const path = Path.resolve(__dirname, 'images', 'code.jpg')
  const writer = Fs.createWriteStream(path)

  const response = await Axios({
    url,
    method: 'GET',
    responseType: 'stream'
  })

  response.data.pipe(writer)

  return new Promise((resolve, reject) => {
    writer.on('finish', () => { /* Add your code here */ resolve(); })
    writer.on('error', () => { /* Add your code here */ reject(); })
  })
}

downloadImage()  

Upvotes: 1

Related Questions