Dies ist ein Ausschnitt für den Code, die ich tun möchte , Blob
um Base64
string:
Dieser kommentierte Teil funktioniert und wenn die von diesem generierte URL auf img src gesetzt ist, wird das Bild angezeigt:
var blob = items[i].getAsFile();
//var URLObj = window.URL || window.webkitURL;
//var source = URLObj.createObjectURL(blob);
//console.log("image source=" + source);
var reader = new FileReader();
reader.onload = function(event){
console.log(event.target.result)
}; // data url!
var source = reader.readAsBinaryString(blob);
Das Problem ist, dass mit dem unteren Code die generierte Quellvariable null ist
Aktualisieren:
Gibt es eine einfachere Möglichkeit, dies mit JQuery zu tun, um Base64-Zeichenfolgen aus der Blob-Datei wie im obigen Code erstellen zu können?
javascript
jquery
Quarks
quelle
quelle
onloadend
sollte vorher kommen,readAsDataURL
nur für den Fall, dass etwas Seltsames passiert und das Laden beendet ist, bevor es die nächste Codezeile erreicht. Natürlich würde dies niemals passieren, aber es ist immer noch eine gute Praxis.das hat bei mir funktioniert:
quelle
cb
?quelle
Es gibt eine reine JavaSript-Methode, die nicht von Stapeln abhängt:
Um diese Hilfsfunktion zu verwenden, sollten Sie einen Rückruf festlegen, Beispiel:
Ich schreibe diese Hilfsfunktion für mein Problem im React Native-Projekt. Ich wollte ein Bild herunterladen und es dann als zwischengespeichertes Bild speichern:
quelle
oder
siehe Antwort Konstruktor können Sie drehen
[blob, buffer source form data, readable stream, etc.]
in Reaktion , die dann in gedreht werden kann ,[json, text, array buffer, blob]
mit Asynchron - Methode / Rückrufe.edit: Wie @Ralph erwähnt hat, verursacht das Verwandeln von allem in eine utf-8-Zeichenfolge Probleme (leider bietet die Antwort-API keine Möglichkeit zum Konvertieren in eine binäre Zeichenfolge), sodass der Array-Puffer stattdessen als Zwischenstufe verwendet wird, was zwei weitere Schritte erfordert (Konvertieren in Byte-Array DANN zu Binärzeichenfolge), wenn Sie darauf bestehen, die native
btoa
Methode zu verwenden.quelle
btoa
Sie können das Problem beheben, indem Sie:
Ich hoffe das hilft dir
quelle
Das Problem ist also, dass Sie ein Basis-64-Image hochladen möchten und eine Blob-URL haben. Die Antwort, die auf allen HTML 5-Browsern funktioniert, lautet: Do:
quelle
Der einfachste Weg in einer einzigen Codezeile
quelle