2017-01-25 28 views
6

Uzak bir sunucudan bir .jpg resmi indirmem ve bir base64 biçimine dönüştürmem gerekiyor. HTTP istemcim olarak axios kullanıyorum. Sunucuya bir git isteği yayınlamayı denedim ve response.data'u kontrol etmeyi denedim, ancak böyle görünmüyor. AXIOS içinAxios kullanarak bir görüntüyü indirin ve base64'e dönüştürün

Bağlantı: https://github.com/mzabriskie/axios

Bağlantı base64 uygulanmasına: Ben NodeJS kullanıyorum https://www.npmjs.com/package/base-64

/öylesine Tepki atob/btoa çalışmıyor, kütüphane 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)); 
+0

Eğer damla söylemek responseType değiştirmeye çalıştınız mı? Dokümanlardan "//' responseType ", sunucunun yanıtlayacağı veri türünü belirtir." –

cevap

2

Bunu yapmak için daha iyi bir yolu olabilir, ama böyle yapmış (eksi ekstra bit catch() gibi, vs.) adres:

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

     } 
    }); 

Ben en azından bir şüphe var Sorununuzun bir kısmı sunucu tarafı olabilir. { responseType: "blob" }'u ayarlamadan bile, response.data çıkışınızda bir şey yapmış olmalısınız.

8

Bu benim için çok çalıştı:

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