2014-07-20 5 views
0

J'ai lu l'article agréable http://www.html5rocks.com/en/tutorials/file/xhr2/Comment écrire Blob dans un fichier local?

Il utilise l'API HTML5 et FileSystem FileWriter pour atteindre l'écriture Blob aux fichiers locaux. Cependant, mon navigateur Safari (actuellement 7.0.5) ne supporte pas les requestFileSystem et FileWriter. (J'ai testé avec Chrome, il ne supporte pas non plus.)

J'ai également cherché en ligne mais il ne semblait pas y avoir quelque chose comme "réponses formelles".

Une autre question est pourquoi la lecture des fichiers locaux au navigateur est simple (en utilisant FileReader), mais écrire dans des fichiers locaux ne semble pas symétrique, en particulier dans la nouvelle norme html5.

+1

L'écriture dans des fichiers locaux présente un risque de sécurité potentiel plus important, et possède en plus une API plus récente. Cependant, forcer les téléchargements a toujours fonctionné. – rvighne

Répondre

2

WebKit (Chrome et Safari), vous pouvez en effet utiliser l'api FileSystem par un préfixe du vendeur:

window.webkitRequestFileSystem 

Et FileWriter est pas directement exposé à JavaScript de toute façon.

Pour les navigateurs non compatibles (ce qui est beaucoup): https://github.com/eligrey/FileSaver.js aidera.


Avez-vous envisagé de forcer un téléchargement à l'ancienne (plus de compatibilité)? Lisez le Blob en tant qu'URI de données, puis modifiez le type de contenu de l'URI en une valeur qui force le téléchargement. Inconvénient: pas de spécification du nom du fichier et fastidieux.

var reader = new FileReader; 
reader.onload = function() { 
    window.open(this.result.replace(/data:.+?\/[^;]+/, "data:application/octet-stream")); 
}; 
reader.readAsDataURL(my_blob); 
+0

J'ai essayé [FileSaver.js] (https://github.com/eligrey/FileSaver.js) et n'affiche pas le dialogue comme le fichier ''. Est-ce que je me méprends sur quelque chose? Ou est-ce dépendant de la plateforme? (Mine est Mac OS/Safari) – RedBeanPieLarry

+0

Btw, je ne pouvais pas trouver le fichier de sortie dans le système de fichiers local non plus. – RedBeanPieLarry

+0

@RedBeanPieLarry: Le fichier se trouve dans votre dossier de téléchargement (ou en fonction des paramètres de votre navigateur, vous serez invité à l'enregistrer). Et il n'y a aucun moyen d'afficher une boîte de dialogue d'enregistrement de fichier à moins que votre navigateur * nativement * supporte l'API ou que ses paramètres l'amènent à vous demander où sauvegarder les téléchargements. – rvighne

Questions connexes