Ahora obtengo el objeto File por esta línea:
file = document.querySelector('#files > input[type="file"]').files[0]
Necesito enviar este archivo a través de json en base 64. ¿Qué debo hacer para convertirlo en una cadena base64?
javascript
base64
Vastamente
fuente
fuente
await
una función que devuelve una Promesa rechazada, la llamada no le devolverá un Error; será arrojado y tendrás que atraparlo.Pruebe la solución usando la
FileReader
clase :Tenga en cuenta que
.files[0]
es unFile
tipo, que es una subclase deBlob
. Por lo tanto, se puede usar conFileReader
.Vea el ejemplo de trabajo completo .
fuente
return reader.result
desde lagetBase64()
función (en lugar de usarconsole.log(reader.result)
) porque quiero capturar la base64 como una variable (y luego enviarla a Google Apps Script). Llamé a la función con:var my_file_as_base64 = getBase64(file)
e intenté imprimir en la consola conconsole.log(my_file_as_base64 )
y acabo de recibirundefined
. ¿Cómo puedo asignar adecuadamente la base64 a una variable?Si buscas una solución basada en promesas, este es el código de @ Dmitri adaptado para eso:
fuente
A partir de las respuestas de Dmitri Pavlutin y joshua.paling, aquí hay una versión extendida que extrae el contenido base64 (elimina los metadatos al principio) y también garantiza que el relleno se realice correctamente .
fuente
resolve(reader.result.replace(/^.*,/, ''));
. Dado que el coma,
está fuera del alfabeto base64, podemos quitar todo lo que aparezca hasta el coma, incluido el mismo. stackoverflow.com/a/13195218/1935128data:
, sin ninguna coma, así que mantendré esa primera parte como está. He actualizado la respuesta en consecuencia.La función JavaScript btoa () se puede usar para convertir datos en una cadena codificada en base64
fuente
Aquí hay un par de funciones que escribí para obtener un archivo en formato json que se puede pasar fácilmente:
fuente
fuente