Maintenant, j'obtiens l'objet File par cette ligne:
file = document.querySelector('#files > input[type="file"]').files[0]
J'ai besoin d'envoyer ce fichier via json en base 64. Que dois-je faire pour le convertir en chaîne base64?
javascript
base64
Vassily
la source
la source
await
utilisez une fonction qui renvoie une promesse rejetée, vous n'obtiendrez pas d'erreur renvoyée par l'appel; il sera lancé et vous devrez l'attraper.Essayez la solution en utilisant la
FileReader
classe :Notez qu'il
.files[0]
s'agit d'unFile
type, qui est une sous-catégorie deBlob
. Ainsi, il peut être utilisé avecFileReader
.Voir l' exemple de travail complet .
la source
return reader.result
lagetBase64()
fonction (plutôt que d'utiliserconsole.log(reader.result)
) parce que je veux capturer la base64 en tant que variable (puis l'envoyer à Google Apps Script). J'ai appelé la fonction avec:var my_file_as_base64 = getBase64(file)
puis j'ai essayé d'imprimer sur console avecconsole.log(my_file_as_base64 )
et je viens de l'obtenirundefined
. Comment puis-je attribuer correctement la base64 à une variable?Si vous recherchez une solution basée sur la promesse, voici le code de @ Dmitri adapté pour cela:
la source
En s'appuyant sur les réponses de Dmitri Pavlutin et joshua.paling, voici une version étendue qui extrait le contenu base64 (supprime les métadonnées au début) et assure également le remplissage correct .
la source
resolve(reader.result.replace(/^.*,/, ''));
. Puisque le coma,
est en dehors de l'alphabet base64, nous pouvons dépouiller tout ce qui se présente jusqu'au coma inclus. stackoverflow.com/a/13195218/1935128data:
, sans aucune virgule, donc je vais garder cette première partie telle quelle. J'ai mis à jour la réponse en conséquence.La fonction JavaScript btoa () peut être utilisée pour convertir des données en chaîne encodée en base64
la source
Voici quelques fonctions que j'ai écrites pour obtenir un fichier au format json qui peut être facilement transmis:
la source
la source