HTML5 Fichier API téléchargement du fichier à partir du serveur et de l'enregistrer dans la sandbox
J'essaie de comprendre API HTML5.
Je suis de la conception de l'application web où le navigateur client besoin de télécharger plusieurs fichiers à partir du serveur, l'utilisateur va réaliser quelque chose avec les fichiers téléchargés et de la demande que de la nécessité de sauvegarder l'état de l'utilisateur dur-rive. Je comprends que le navigateur ne peut enregistrer ces fichiers seulement de son sandbox qui est très bien aussi longtemps que l'utilisateur peut récupérer les fichiers sur le deuxième temps, il lance l'application.
Dois-je utiliser BlobBuilder ou FileSaver? Je suis un peu perdu ici.
Vous devez vous connecter pour publier un commentaire.
Je vais vous montrer comment télécharger des fichiers avec le XMLHttpRequest Niveau 2 et les enregistrer avec la Système de fichiers de l'API ou avec la FileSaver interface.
Téléchargement De Fichiers
Pour télécharger un fichier, vous utilisez le XMLHttpRequest Niveau 2 (aka XHR2), qui soutient la croix-origine des demandes, en téléchargeant des événements de progression, et un téléchargement de données binaires. Dans le post "Nouvelles Astuces dans XMLHttpRequest2" il y a beaucoup d'exemples d'utilisation de XHR2.
À télécharger un fichier sous forme d'un blob tout ce que vous avez à faire est de spécifier la
responseType
de "blob". Vous pouvez également utiliser le type "texte", "arraybuffer" ou "document". La fonction ci-dessous télécharge le fichier dans leurl
et l'envoie à lasuccess
rappel:La
success
rappel de recevoir comme argument une instance de Blob qui peut ensuite être modifié et enregistré et/ou téléchargées sur un serveur.L'enregistrement des Fichiers avec le système de fichiers de l'API
Comme le puis-je utiliser... site souligne il n'y a pas beaucoup de navigateurs avec support pour le système de fichiers de l'API. Pour Firefox il y a une explication pour le manque de soutien de. Donc, vous devez utiliser google Chrome pour ce faire.
D'abord, vous devrez demander un espace de stockage, il peut être soit temporaire ou permanent. Vous aurez probablement envie d'avoir un stockage persistant, dans ce cas, vous devrez demander un quota d'espace de stockage à l'avance (quelques faits):
Maintenant que vous avez accès au système de fichiers vous pouvez enregistrer et lire des fichiers à partir d'elle. La fonction ci-dessous peut enregistrer une goutte dans le chemin d'accès spécifié dans le système de fichiers:
Un pour lire un fichier par son chemin d'accès:
En plus de la
readAsText
méthode, selon le FileReader API vous pouvez appelerreadAsArrayBuffer
etreadAsDataURL
.À l'aide de la FileSaver
Le post "Enregistrement des Fichiers Générés sur le Côté Client" explique très bien l'utilisation de cette API. Certains navigateurs peuvent avoir besoin de l' FileSaver.js afin d'avoir la
saveAs
interface.Si vous l'utiliser conjointement avec le
downloadFile
fonction, vous pourriez avoir quelque chose comme ceci:Bien sûr, il aurait plus de sens si l'utilisateur peut visualiser l'image, de la manipuler et de l'enregistrer ensuite dans sa voiture.
Gestionnaire D'Erreur
Simplement de remplir le exemple:
Liens utiles
Si vous avez uniquement en charge les navigateurs HTML5, il y a un "télécharger" attribut que vous pouvez utiliser. Plus de détails ici : http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download
Mon truc, c'est de tout simplement ajouter des Images avec un attribut "src" pointant vers vos téléchargements multiples. Le site du serveur doit envoyer les fichiers avec une "disposition: attachment" en-tête et ensuite le client va essayer d'enregistrer le fichier localement. Le seul "problème" est que les IFRAMEs restera dans votre arborescence DOM débris jusqu'à ce que l'utilisateur quitte ou recharge la page. Faire de l'IFRAME invisible (par exemple, largeur=0; hauteur=0;) et vous êtes prêt à aller! Tous les navigateurs.