首页 > 解决方案 > NodeJS Axios 请求返回一个奇怪的字符串

问题描述

我正在向第三方 API 发送一个 GET 请求,它返回一个奇怪的字符串(应该是一个图像)。

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");
});

回应是: "����\u0000\u0010JFIF\u0000\u0001\u0001\u0000\u0000\u0001\u0000\u0001\u0000\u0000��\u0000C

如何将其转换为图像或图像/网址?

谢谢

标签: node.jsaxiosblob

解决方案


你可以试试这个

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()  

推荐阅读