Ceci est un extrait du code que je veux faire Blob
pour Base64
string:
Cette partie commentée fonctionne et que lorsque l'URL générée par ceci est définie sur img src, elle affiche l'image:
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);
Le problème est avec le code inférieur, la variable source générée est nulle
Mettre à jour:
Existe-t-il un moyen plus simple de le faire avec JQuery pour pouvoir créer une chaîne Base64 à partir d'un fichier Blob comme dans le code ci-dessus?
javascript
jquery
quarks
la source
la source
onloadend
devrait venir avantreadAsDataURL
juste au cas où quelque chose de bizarre se produirait et que le chargement se termine avant d'atteindre la ligne de code suivante. Évidemment, cela n'arriverait jamais mais c'est toujours une bonne pratique.cela a fonctionné pour moi:
la source
cb
?la source
Il existe une méthode JavaSript pure qui ne dépend d'aucune pile:
Pour utiliser cette fonction d'assistance, vous devez définir un rappel, par exemple:
J'écris cette fonction d'aide pour mon problème sur le projet React Native, je voulais télécharger une image puis la stocker en tant qu'image en cache:
la source
ou
voir le constructeur de Response , vous pouvez le transformer
[blob, buffer source form data, readable stream, etc.]
en Response , qui peut ensuite être transformé en[json, text, array buffer, blob]
avec la méthode async / les rappels.edit: comme @Ralph l'a mentionné, transformer tout en chaîne utf-8 pose des problèmes (malheureusement l'API Response ne fournit pas un moyen de conversion en chaîne binaire), donc le tampon de tableau est utilisé à la place comme intermédiaire, ce qui nécessite deux étapes supplémentaires (le convertir en byte array THEN en chaîne binaire), si vous insistez sur l'utilisation de la
btoa
méthode native .la source
btoa
vous pouvez résoudre le problème en:
J'espère que cela vous aidera
la source
Donc, le problème est que vous souhaitez télécharger une image de base 64 et que vous avez une URL blob. Maintenant, la réponse qui fonctionnera sur tous les navigateurs html 5 est: Faites:
la source
Je voulais quelque chose où j'ai accès à la valeur base64 pour stocker dans une liste et pour moi l'ajout d'un écouteur d'événements a fonctionné. Vous avez juste besoin du FileReader qui lira le blob d'image et retournera le base64 dans le résultat.
La dernière partie est le readAsDataURL qui est très important est utilisé pour lire le contenu de l'objet blob spécifié
la source
Le moyen le plus simple en une seule ligne de code
la source