使用Axios下载图像并将其转换为base64

2022-08-30 04:57:41

我需要从远程服务器下载.jpg图像并将其转换为base64格式。我使用 axios 作为我的 HTTP 客户端。我尝试过向服务器发出git请求并检查它,但它似乎不像那样工作。response.data

链接到公理: https://github.com/mzabriskie/axios

链接到 base64 实现:https://www.npmjs.com/package/base-64

我正在使用NodeJS / React,所以atob / btoa不起作用,hense库。

axios.get('http://placehold.it/32').then(response => {
    console.log(response.data); // Blank
    console.log(response.data == null); // False 
    console.log(base64.encode(response.data); // Blank
}).catch(err => console.log(err));

答案 1

这对我来说很好:

function getBase64(url) {
  return axios
    .get(url, {
      responseType: 'arraybuffer'
    })
    .then(response => Buffer.from(response.data, 'binary').toString('base64'))
}

答案 2

可能有更好的方法来做到这一点,但我是这样做的(减去额外的位,如,等等):catch()

axios.get(imageUrl, { responseType:"blob" })
    .then(function (response) {

        var reader = new window.FileReader();
        reader.readAsDataURL(response.data); 
        reader.onload = function() {

            var imageDataUrl = reader.result;
            imageElement.setAttribute("src", imageDataUrl);

        }
    });

我怀疑您的问题至少有一部分可能是服务器端。即使没有设置,您的输出中也应该有一些东西。{ responseType: "blob" }response.data