2017-01-25 6 views
6

Ich muss ein JPG-Bild von einem Remote-Server herunterladen und in ein Base64-Format konvertieren. Ich verwende Axios als meinen HTTP-Client. Ich habe versucht, eine git Anfrage an den Server und die Überprüfung der response.data, aber es scheint nicht so zu arbeiten.Laden Sie ein Bild mit Axios herunter und konvertieren Sie es in base64

Link zu axios: https://github.com/mzabriskie/axios

Link zu base64 Umsetzung: https://www.npmjs.com/package/base-64

I NodeJS bin mit/Reagieren so atob/btoa nicht funktioniert, Hense die Bibliothek.

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

Haben Sie versucht, response zu ändern Blob zu sagen? Aus docs "//' responseType "gibt den Typ der Daten an, auf die der Server antworten wird" –

Antwort

2

Es könnte ein besserer Weg, dies zu tun, aber ich habe es so gemacht (minus den zusätzlichen Bits wie catch() usw.):

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

     } 
    }); 

Ich habe den Verdacht, dass zumindest Teil Ihres Problems könnte serverseitig sein. Auch ohne Einstellung { responseType: "blob" } sollten Sie etwas in Ihrem response.data Ausgang haben.

8

Das funktionierte gut für mich:

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