当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《使用Axios下载图像并将其转换为base64》经验,为你挑选了2个好方法。

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

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

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

我正在使用NodeJS/React,所以atob/btoa不起作用,hense the library.

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

小智.. 77

这对我很有用:

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

谢谢,效果很好!如果您要将base64放在<img src =“” ...中,那么请不要忘记在base64字符串前面加上“ data:image / jpeg; base64,” (4认同)

** DeprecationWarning:由于安全性和可用性问题,不建议使用Buffer()。请改用Buffer.alloc(),Buffer.allocUnsafe()或Buffer.from()方法。** (2认同)

应该是Buffer.from(response.data,'binary')) (2认同)


小智.. 13

可能有更好的方法来做到这一点,但我已经这样做了(减去额外的比特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输出中有一些东西.



1> 小智..:

这对我很有用:

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


谢谢,效果很好!如果您要将base64放在<img src =“” ...中,那么请不要忘记在base64字符串前面加上“ data:image / jpeg; base64,”
** DeprecationWarning:由于安全性和可用性问题,不建议使用Buffer()。请改用Buffer.alloc(),Buffer.allocUnsafe()或Buffer.from()方法。**
应该是Buffer.from(response.data,'binary'))

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输出中有一些东西.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有