Este es un fragmento del código que quiero hacer Blob
para Base64
encadenar:
Esta parte comentada funciona y cuando la URL generada por esto se establece en img src, muestra la imagen:
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);
El problema es con el código inferior, la variable fuente generada es nula
Actualizar:
¿Hay una manera más fácil de hacer esto con JQuery para poder crear una cadena Base64 a partir del archivo Blob como en el código anterior?
javascript
jquery
quarks
fuente
fuente
onloadend
debería aparecer antesreadAsDataURL
en caso de que ocurra algo extraño y termine de cargarse antes de llegar a la siguiente línea de código. Obviamente esto nunca sucedería, pero sigue siendo una buena práctica.esto funcionó para mí:
fuente
cb
?fuente
Hay una forma pura de JavaSript que no depende de ninguna pila:
Para usar esta función auxiliar, debe establecer una devolución de llamada, por ejemplo:
Escribo esta función auxiliar para mi problema en el proyecto React Native, quería descargar una imagen y luego almacenarla como una imagen en caché:
fuente
o
vea el constructor de Response , puede convertirlo
[blob, buffer source form data, readable stream, etc.]
en Response , que luego se puede convertir[json, text, array buffer, blob]
con método asíncrono / devoluciones de llamada.editar: como mencionó @Ralph, convertir todo en una cadena utf-8 causa problemas (desafortunadamente, la API de respuesta no proporciona una forma de convertir a una cadena binaria), por lo que el búfer de matriz se usa como intermedio, lo que requiere dos pasos más (convertirlo a matriz de bytes ENTONCES a cadena binaria), si insiste en usar el
btoa
método nativo .fuente
btoa
Puedes solucionar el problema:
Espero que esto te ayude
fuente
Entonces, el problema es que desea cargar una imagen base 64 y tiene una URL de blob. Ahora la respuesta que funcionará en todos los navegadores html 5 es: Hacer:
fuente
Quería algo donde tuviera acceso al valor de base64 para almacenar en una lista y para mí, agregar oyente de eventos funcionó. Solo necesita FileReader, que leerá el blob de imágenes y devolverá el base64 en el resultado.
La parte final es readAsDataURL, que es muy importante para leer el contenido del Blob especificado.
fuente
La forma más fácil en una sola línea de código
fuente