web-dev-qa-db-fra.com

"Aw, Snap" lorsque l'URI des données est trop volumineux

J'écris une extension chrome qui fait ce qui suit:

  1. Télécharge un fichier d'un site Web vers la mémoire à l'aide de XMLHttpRequest
  2. Ajoute des données supplémentaires au fichier, puis base64 code le résultat dans la variable total_encoded_data
  3. Offre les données à l'utilisateur à l'aide de <a href=data:application/octet-stream;charset=utf-8;base64,' + total_encoded_data+' download='file.bin'>Click to Download</a>. Où total_encoded_data est ajouté à href à l'aide de jQuery.

J'ai trouvé, grâce à une recherche binaire manuelle, que si la taille de total_encoded_data est supérieur à 2097100 caractères, je reçois un message Aw, Snap lorsque je clique sur le lien. Si la taille est plus petite, je peux télécharger comme prévu.

En plus de tester la taille du fichier, j'ai également utilisé atoi pour m'assurer que l'encodage base64 est valide et qu'il fonctionne sans erreur.

Les messages Aw, Snap ne produisent aucun rapport de plantage dans chrome://crashes ni aucune sortie inattendue dans le chrome_debug.log

Comment éviter un message Aw, Snap lorsque je sers un uri de données où la longueur de chaîne codée en base64 est supérieure à 2097100?

41
amccormack

C'est un bug de chrome conn . La solution de contournement recommandée consiste à utiliser un RL blob . Voir aussi Création d'un blob à partir d'une chaîne base64 en JavaScript .

54
rhashimoto