Herunterladen einer Datei aus Servlet unter Verwendung von Ajax
Habe ich eine zip-Datei in meinem servlet. Nun würde ich gerne auslösen, servlet, Ajax und prompt der download-dialog für den Benutzer. Ich auslösen kann das servlet, aber ich weiß nicht, wie man den speichern-dialog. Wie kann ich das erreichen?
InformationsquelleAutor der Frage Vinay | 2010-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann man nicht "laden Sie eine Datei mit AJAX". AJAX ist zum herunterladen von Daten von einem server für JavaScript zu verarbeiten.
Damit der Benutzer herunterladen die Datei entweder mit einem einfachen link auf die Datei/servlet, oder wenn Sie wirklich, wirklich brauchen, um die JavaScript verwenden, dann weisen Sie die URL zu
document.location.href
.Werden Sie brauchen, um stellen Sie sicher, dass der server (oder in diesem Fall das servlet) sendet den entsprechenden MIME-Typ, im Falle einer ZIP-Datei wahrscheinlich
application/zip
.InformationsquelleAutor der Antwort RoToRa
Können Sie nicht Ajax verwenden. Sie wollen im Grunde, lassen den Anwender die Datei speichern Inhalte auf der lokalen Festplatte die Datei-system, nicht zuweisen, die Datei-Inhalts an eine JavaScript-variable, wo es nicht tun nichts mit ihm. JavaScript hat aus offensichtlichen Gründen der Sicherheit keine Einrichtungen, um programmgesteuert auslösen Speichern Als dialog, wobei der Inhalt der Datei von einem beliebigen JavaScript-variable.
Nur eine plain-vanilla-link auf die servlet-URL und lassen Sie das servlet festlegen des HTTP -
Content-Disposition
headerattachment
. Es ist speziell dieser header wird die Kraft der browser, um pop - Speichern Als dialog. Die zugrunde liegende Seite bleiben gleich und nicht aktualisiert oder so, um die gleiche Erfahrung wie mit Ajax.Grundsätzlich:
Könnte das auch in JavaScript so unten ohne brennen eine ganze Ajax-Aufruf:
Alternativ, wenn man eigentlich mit POST für dieses haben, dann verwenden Sie eine (versteckte) synchron-POST-Formular bezieht sich die servlet-URL und lassen Sie JavaScript durchführen
form.submit()
.Siehe auch:
InformationsquelleAutor der Antwort BalusC
InformationsquelleAutor der Antwort Master Mind