Mario: Dateidownload via JavaScript

Hi!

ich brauche etwas ganz dringend! ich kann es aber nicht finden.

also, ich muss von internet eine datei via JavaScript runterladen, und weiß aber nicht, wie!

kann mir irgendjemand helfen???

grüsse,
Mario

  1. Hi,

    also, ich muss von internet eine datei via JavaScript runterladen, und weiß aber nicht, wie!

    kleiner Tipp: Das liegt nicht an schlechter Recherche. Siehe auch [pref:t=64111&m=364370] ff.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo Mario,

    du kannst zwar mit JS direkt keinen Dateidownload machen. Aber auf Umwegen kommst du vielleicht doch ans Ziel. Die Methode window.open() könnte dein spezieller Freund sein.

    Ja,ja, ich weiß, du willst kein neues Fenster öffnen. Aber wenn du mit
     window.open("http://blabla/dateiname.xyz", "");
    deine gewünschte Datei ansprichst, dann wird der Browser auf jeden Fall, die Datei zu laden. Anhand des MIME-Typs (oder des Dateinamens bei manchen Browsern) erkennt er den Dateityp, und wird dann evtl. ganz von sich aus die Datei zum Speichern anbieten, anstatt sie im Fenster zu öffnen.

    Der Hinweis von Cheatah auf ein (seiner Meinung nach) ähnliches Posting scheint mir hier unpassend - da geht's IMHO um ein ganz anderes Thema.

    Alles gute beim Ausprobieren,

    Martin

    --
    Irgendwann in grauer Vorzeit benutzte einmal einer unserer prähistorischen Vorfahren ein Schimpfwort anstatt einer Keule.
    Die Zivilisation hatte begonnen.
    1. hi,

      Ja,ja, ich weiß, du willst kein neues Fenster öffnen. Aber wenn du mit
       window.open("http://blabla/dateiname.xyz", "");
      deine gewünschte Datei ansprichst, dann wird der Browser auf jeden Fall, die Datei zu laden.

      und es wird anschliessend ein neues, leeres fenster auf dem bildschirm rumstehen.

      warum nicht gleich window.location.href den URL der runterzuladenden ressource zuweisen? wenn der browser zu dem schluss kommt, dass er zu dieser einen download-dialog anbieten will, wird die aktuelle seite trotzdem im fenster geladen bleiben.

      und warum nicht gleich einen normalen html-link auf die datei setzen ...? welchen sinn soll hier JS haben?

      gruss,
      wahsaga

      1. [...]

        und es wird anschliessend ein neues, leeres fenster auf dem bildschirm rumstehen.

        Ist das wirklich so?
        Ich hab momentan keine Zeit für großangelegte Versuche (bzw. möchte sie mir nicht nehmen). Aber ich habe mich an dem Verhalten, das ich vom IE kenne, orientiert: Wenn ich da einen Download-Link, z.B. für eine PDF-Datei, anklicke und "Öffnen im neuen Fenster" wähle, dann geht zwar für einen kurzen Augenblick ein neues Fenster auf, aber nur solange, bis der Browser begriffen hat, dass er die verlinkte Datei nicht selbst anzeigen kann (darf). Dann schließt er das überflüssige Fenster ohne weitere Aufforderung wieder und fängt mit dem Download an.

        warum nicht gleich window.location.href den URL der runterzuladenden ressource zuweisen? wenn der browser zu dem schluss kommt, dass er zu dieser einen download-dialog anbieten will, wird die aktuelle seite trotzdem im fenster geladen bleiben.

        Stimmt eigentlich... ;)

        und warum nicht gleich einen normalen html-link auf die datei setzen ...? welchen sinn soll hier JS haben?

        Weiß nicht, aber ich könnte mir Situationen vorstellen, in denen es sinnvoll ist, einen Download programmgesteuert anzustoßen, ohne dass der Benutzer irgendwo draufklicken muss...

        So long,

        Martin

        1. hi,

          Aber ich habe mich an dem Verhalten, das ich vom IE kenne, orientiert: Wenn ich da einen Download-Link, z.B. für eine PDF-Datei, anklicke und "Öffnen im neuen Fenster" wähle, dann geht zwar für einen kurzen Augenblick ein neues Fenster auf, aber nur solange, bis der Browser begriffen hat, dass er die verlinkte Datei nicht selbst anzeigen kann (darf). Dann schließt er das überflüssige Fenster ohne weitere Aufforderung wieder und fängt mit dem Download an.

          sicher, aber das ist etwas anderes, als wenn du per window.open explizit ein neues fenster öffnest.

          gruss,
          wahsaga

        2. Hi,

          und es wird anschliessend ein neues, leeres fenster auf dem bildschirm rumstehen.
          Ist das wirklich so?

          natürlich, was denn sonst? window.open() öffnet ein neues Browserfenster, in welches Du keinerlei Inhalt leitest, weil die URL zu keiner in einem Browserfenster darstellbaren Ressource führt.

          Aber ich habe mich an dem Verhalten, das ich vom IE kenne, orientiert:

          Du gehst von einem Einzelfall aus.

          Weiß nicht, aber ich könnte mir Situationen vorstellen, in denen es sinnvoll ist, einen Download programmgesteuert anzustoßen, ohne dass der Benutzer irgendwo draufklicken muss...

          Etwas zu tun, ohne den Bennutzer vorher zu fragen (sprich: es ihn initiieren zu lassen), ist dringend zu vermeiden.

          Cheatah

          --
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
          1. Etwas zu tun, ohne den Bennutzer vorher zu fragen (sprich: es ihn initiieren zu lassen), ist dringend zu vermeiden.

            ACK. Ich dachte dabei an Fälle, wo ein Script (auf Initiative des Benutzers) ERST eine Sequenz von Anweisungen durchläuft, und DANN quasi als Abschluss eine Datei vom Server lädt. Zugegeben, das ist ein konstruierter Fall. Ich wollte damit auch nur ausdrücken, dass es nicht grundsätzlich sinnlos ist, einen Download durch JS auszulösen.
            Außerdem habe ich schon häufig für den Eigenbedarf HTML-Seiten mit hohem JS-Anteil erstellt, bei denen ich Autor und einziger Nutzer bin. Und dann weiß ich, was "da drin" passiert.

            Grüße,

            Martin