Download-Fenster
Lowterm
- java
Hi,
kurze Frage: Ist es machbar via JavaScript das Download-Fenster zu öffnen?
oder muss es Serverseitig gemacht werden?
Ich habe einige Sachen getestet, hat aber nicht viel gebracht. Darunter:
documnet.location.href="test.txt", da geht ein fenster auf und der Inhalt
der Datei wird angezeigt aber kein downloadfenster.
Danke im Voraus
Hi Lowterm,
documnet.location.href="test.txt", da geht ein fenster auf und der Inhalt
der Datei wird angezeigt aber kein downloadfenster.
Glaub ich nicht: eher bei document.location.href="test.txt" vielleicht.
Egal, denn das Problem ist, dass dein Browser sich für befähigt hält, eine txt Datei darstellen zu können, was er denn auch macht. Um einen *.txt also als Download anzubieten, solltest du serverseitig folgende Deklaration mit reinbringen:
Content-Type: "application/x-download"
Grüsse,
Richard
Hallo Richard,
danke. Ich arbeite mit ASP.Net. Wie sollen aber Content-Type: "application/x-download" mit Javascript in Verbindung gesetzt werden?
Eigentlich benutze ich den folgenden Code, um das Downloadfenster zu öffnrn:
Dim targetFile As System.IO.FileInfo = New System.IO.FileInfo(Dateiname)
Response.Clear()
Response.AddHeader("Content-Disposition", "attachment; filename=" + targetFile.Name)
Response.AddHeader("Content-Length", targetFile.Length.ToString)
Response.ContentType = "application/octet-stream"
Response.WriteFile(targetFile.FullName)
Response.End()
Das funktioniert auch, wenn die Seite direkt aufgerufen wird. Aber da ich
die Seite über Ajax aufrufe, aus irgendeinem Grund funktioniert es nicht mehr?
Gruß
Hi,
Wie sollen aber Content-Type: "application/x-download" mit Javascript in Verbindung gesetzt werden?
Gar nicht.
Eigentlich benutze ich den folgenden Code, um das Downloadfenster zu öffnrn: [...]
Das funktioniert auch, wenn die Seite direkt aufgerufen wird. Aber da ich
die Seite über Ajax aufrufe, aus irgendeinem Grund funktioniert es nicht mehr?
Der "irgendeine Grund" lautet: *Weil* du den Request per AJAX machst.
AJAX ist dazu da, Requests *im* *Hintergrund* auszuführen - wenn dabei ein Download-Dialog angezeigt würde, wäre es nicht mehr sonderlich hintergründig, oder ...?
Verwende einen stinknormalen Link, der auf eine Ressource verweist, die obige Header beinhaltet - oder auch location.href, wenn du es per JavaScript machen willst.
MfG ChrisB
Hallo Chris,
danke für deine Antwort.
Der Verlauf des Programms ist so, dass man etwas schreibt, auf einen Button
klickt, der Text wird als .txt-Datei auf dem Setver gespeichert und als
Download angeboten. Einen Link anzubieten, ist an dieser Stelle nicht so
schön. Ich weiß auch nicht, ob man von JavaScript heraus eine ASP-Funktion
aufrufen könnte, sonst wäre dies auch eine Alternative.
Gruß
Hi,
Der Verlauf des Programms ist so, dass man etwas schreibt, auf einen Button klickt, der Text wird als .txt-Datei auf dem Setver gespeichert und als Download angeboten. Einen Link anzubieten, ist an dieser Stelle nicht so schön.
Na dann halt automatisch location.href neu setzen - auf ein Script, dass diese Textdaten nach passenden Headern an den Client ausliefert.
MfG ChrisB
Hallo Chris,
danke, hab aber nicht ganz verstanden, was du meinst. Kannst du bitte das
anhand eines kleinen Beispiel erlätern?
Danke
Hi,
warum denn jetzt schon wieder ein anderer Nick?
danke, hab aber nicht ganz verstanden, was du meinst. Kannst du bitte das
anhand eines kleinen Beispiel erlätern?
Du hast eine Adresse, bei deren Abruf der Server die Daten schickt, und zwar mit den entsprechenden Headern, die dafür sorgen, dass der Client den Download-Dialog anzeigt.
Und die Adresse kannst du jetzt entweder über einen Link aufrufen (willst du nicht) - oder, in dem du sie an location.href zuweist.
MfG ChrisB