Lowterm: Download-Fenster

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

  1. 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

    1. 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ß

      1. 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

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
        1. 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ß

          1. 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

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.
            1. Hallo Chris,

              danke, hab aber nicht ganz verstanden, was du meinst. Kannst du bitte das
              anhand eines kleinen Beispiel erlätern?

              Danke

              1. 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

                --
                Light travels faster than sound - that's why most people appear bright until you hear them speak.