Mi piacerebbe visualizzare un'immagine jpeg sull'interfaccia utente. Per questo, chiedo il mio servizio (metodo GET) e poi mi sono convertito a basare 64:Angular JS - richiesta per ottenere un'immagine
$http({
url: "...",
method: "GET",
headers: {'Content-Type': 'image/jpeg'}
}).then(function(dataImage){
var binary = '';
var responseText = dataImage.data;
var responseTextLen = dataImage.data.length;
for (var j = 0; j < responseTextLen; j+=1) {
binary += String.fromCharCode(responseText.charCodeAt(j) & 0xff)
}
base64Image = 'data:image/jpeg;base64,' + window.btoa(binary);
});
Alla fine, il mio browser mi dice che l'immagine è danneggiato o troncato. Così ho provato la creazione di un XMLHttpRequest utilizzando un overrideMimeType ('text/plain; charset = x-user-definito') e funziona:
var xhr_object = new XMLHttpRequest();
xhr_object.overrideMimeType('text/plain; charset=x-user-defined');
xhr_object.open('GET', '...', false);
xhr_object.send(null);
if(xhr_object.status == 200){
var responseText = xhr_object.responseText;
var responseTextLen = responseText.length;
var binary = ''
for (var j = 0; j < responseTextLen; j+=1) {
binary += String.fromCharCode(responseText.charCodeAt(j) & 0xff)
}
base64Image = 'data:image/jpeg;base64,' + window.btoa(binary);
}
qual è la differenza?
Ricevo ancora un errore di "dati non implementa l'errore Blob", anche con '{responseType:" blob "}'. – Yasammez
Che cosa dice l'ispettore del browser? Ci sono richieste di rete bloccate dal tuo cliente? – Daan
Questo finalmente ha risolto il mio problema. Non c'è bisogno di occuparsi di semplici vecchi convertitori XHR e btoa(). – Xinan