Télécharger un fichier à partir de la Servlet utilisant Ajax
J'ai créé un fichier zip dans ma servlet. Maintenant, je voudrais déclencheur qui servlet utilisant Ajax et invite la boîte de dialogue téléchargement de l'utilisateur. Je peux déclencher la servlet, mais je ne sais pas comment obtenir la boîte de dialogue enregistrer. Comment puis-je y parvenir?
OriginalL'auteur Vinay | 2010-08-17
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas télécharger un fichier à l'aide d'AJAX". AJAX est sur le téléchargement de données à partir d'un serveur pour le JavaScript pour le processus.
Pour permettre à l'utilisateur de télécharger le fichier soit utiliser un simple lien vers le fichier/servlet, ou si vous avez vraiment, vraiment besoin d'utiliser le JavaScript, puis affecter l'URL de
document.location.href
.Aussi, vous devez vous assurer que le serveur (ou dans ce cas, la servlet) envoie le type MIME approprié, dans le cas d'un fichier ZIP probablement
application/zip
.Hein? À l'aide d'un lien normal
<a href="/path/to/file">Download</a>
"télécharger le fichier sur le fait de cliquer sur le lien".OriginalL'auteur RoToRa
Vous ne pouvez pas utiliser Ajax pour cela. Fondamentalement, vous voulez laisser à l'utilisateur d'enregistrer le contenu du fichier sur le disque local du système de fichiers, de ne pas affecter le contenu du fichier pour une variable JavaScript où il ne peut pas faire n'importe quoi avec elle. JavaScript a pour d'évidentes raisons de sécurité, aucune des installations de programmation pour déclencher la Enregistrer sous dialogue par lequel le contenu du fichier est fourni à partir d'un arbitraire variable JavaScript.
Juste une plaine de vanille lien pointe vers l'URL du servlet et de laisser le servlet définir le HTTP
Content-Disposition
en-tête deattachment
. C'est précisément cet en-tête qui va forcer le navigateur à la pop un Enregistrer sous boîte de dialogue. La page sous-jacente va rester le même et pas vous rafraîchir, la réalisation de la même expérience qu'avec l'Ajax.En gros:
Qui pourrait également être fait en JavaScript comme ci-dessous, sans tirer tout un appel Ajax:
Alternativement, si vous êtes réellement à l'aide de POST pour cette, puis utiliser un (caché) synchrone POST formulaire de renvoi de la servlet URL et laissez JavaScript effectuer une
form.submit()
.Voir aussi:
OriginalL'auteur BalusC