我正在尝试从外部URL提取图像,然后将其作为响应发送到koa2。为了获取图像,我正在使用Axios库。
我正在尝试通过以下方式做到:
router.get('/get-image', async (ctx, next) => {
const {authToken} = ctx.query
const response = await axiosInstance.get(
'https://www.someurl.com/image/992',
{
headers: {
Authorization: `Bearer ${authToken}`,
},
}
)
ctx.type = 'image/jpeg'
ctx.body = response.data
})
但是我从该请求获得的图像无效。它仅显示空白矩形。
有人可以在正确的方向上向我指出如何重新发送接收到的图像吗?
设置responseType: 'stream'
。 'arraybuffer'也可以工作,但是'stream'更好,因为您只是在遍历字节。
默认情况下,我相信axios会解码为utf-8字符串,这对于图像二进制数据当然是毫无意义的。
const response = await axios.get(url, {
responseType: 'stream',
...
})