2010-04-12 6 views
3

Je souhaite que l'utilisateur télécharge le contenu actuel d'une zone de texte dans un fichier texte sur son ordinateur. Dans le passé, je créer un iframe pointant vers une URL avec les données, ce qui déclencherait une boîte de dialogue de téléchargement de fichier. Cependant, cette fois, les données sont côté client.Comment télécharger le contenu côté client

Alors, est-il possible de laisser l'utilisateur télécharger des données sans lui envoyer le côté serveur?

Répondre

5

est-il possible de laisser l'utilisateur télécharger des données sans lui envoyer côté serveur?

Dans le cas général no.

Il est possible avec une URL data:, comme dans la réponse de janmoesen (bien que vous devriez encoder l'URL de la valeur à inclure dans l'URL, ou vous pouvez rencontrer la corruption lorsqu'une séquence %nn apparaît dans les données). Cependant, cela devient impossible pour des données très longues, et il n'est pas disponible dans les anciens navigateurs ou dans Internet Explorer. (IE8 permet d'utiliser des URL de données courtes pour des images, mais pas de navigation directe.) Bien que vous puissiez inclure une méthode d'URL de données pour améliorer le processus sur les navigateurs qui le supportent, vous aurez toujours besoin d'une solution de secours. les données vers le côté serveur et l'avoir cracher un fichier en réponse.

(Pour des raisons de sécurité, cela ne devrait être autorisée dans une requête POST, et le serveur doit inclure Content-Disposition: attachment dans la réponse. Un script écho contenu peut vous donner des problèmes cross-site-scripting autrement.)

6

Si cela n'a pas besoin de fonctionner dans les "anciens navigateurs" comme IE, vous pouvez ouvrir une nouvelle fenêtre avec l'emplacement 'data:text/plain,' + yourTextarea.value. L'utilisateur peut alors enregistrer ce fichier en utilisant le menu Fichier/Page ou Ctrl + S.

Questions connexes