T-Rex: Default Dateinamen festlegen, der für "speichern unter" einer html Seite benutzt wird

Moin,

Bei mir kommt es häufiger vor, dass ich meine eigene html Seite speichern möchte. Ich hab schon gemerkt, dass ich über den <titel> im <head> den Dateinamen beeinflussen kann.

Dennoch frage ich mich ob es ein komplettes tag gibt mit dem ich den Dateinamen inklusive Endung exakt angeben kann?

Gruß save as T-Rex Beitrag

  1. Allgemeine Aussage: Normalerweise ist es, beim Download einer Webseite (→ „Speichern unter“), der Job des Useragenten (Browsers), einen für das Dateisystem gültigen Namen zu „bauen“ und vorzuschlagen. Was der dazu heranzieht ist Sache der Programmierer, denn das ist - soweit ich das weiß - nirgendwo spezifiert.

    Aber: Wenn Du die „Datei“ explizit zum Abspeichern anbietest, so könntest Du in den HTTP-Headern

    Content-Type: text/html; charset=utf-8
    Content-Disposition: attachment; filename="filename.html"
    

    senden. Wenn es eine statische HTML-Seite ist und Du das darfst, dann packe diese dazu in einen PHP-Wrapper oder in ein Verzeichnis mit .htaccess, welche das Senden diese Header bewirken.

    Wie die Browser darauf reagieren, wenn man das analog als Meta-Angabe sendet …

    <meta name="Content-Type" value="text/html; charset=utf-8">
    <meta name="Content-Disposition" value="attachment; filename=filename.html">
    

    ... habe ich mangels Anlass nie getestet.

    Versuche spaßeshalber auch mal nur

    filename: filename.html
    

    bzw.

    <meta name="filename" value="filename.html">
    

    Das könnte womöglich klappen, weil die Browser die kombinierten Angaben ohnehin zerlegen…

    1. Danke für deine Antwort ... hat alles keine Einfluss auf den Dateinamen.

      Mir ist schon klar, dass man dem Betriebssystem keinen Namen aufs Auge drücken kann / sollte, der verboten ist. Aber ich habe gehofft sehr leicht einen Vorschlag machen zu können.

      Gruß <meta name="username" value="T-Rex.html">

  2. Hallo,

    kennst du schon das download-Attribut?

    Gruß
    Jürgen

    1. Hallo Jürgen,

      kennst du schon das download-Attribut?

      ich kannte es bis eben noch nicht. Muss ich mir mal merken.

      Aber das hilft dem T-Rex vermutlich nicht weiter. So wie ich ihn verstanden habe, möchte er den Dateinamen vorgeben, den der Browser beim Speichern des akuell angezeigten HTML-Dokuments verwendet.

      Und da ist meines Wissens das title-Element die beste Quelle. Dessen Inhalt wird in allen mir geläufigen Browsern als Dateiname verwendet, wobei die Browser von sich aus gleich Zeichen weglassen oder ersetzen, die auf dem jeweiligen Hostsystem in Dateinamen kritisch oder verboten sind.

      Einen schönen Tag noch
       Martin

      --
      Motto der DIY-Anhänger: If it ain't broken, fix it until it is.
  3. Liebe Mitleidende,

    ich habe jetzt ein böses Workaround für dieses Problem gebastelt. Wenn man strg drückt, ändere ich mittels Javascript den Title der Seite. Lässt man strg wieder los, wird der Ursprungstitel wieder gesetzt. Passt für mich. Ist natürlich keine Allgemeingültige Lösung, da man theoretisch immer noch über die Maus speichern könnte. Außerdem bleibt der Titel "entfernt", wenn man mittels strg+s in einen anderen Kontext springt und dort die Tasten wieder los lässt. Aber wie gesagt, für mich passt es so.

    So habe ich zwar keinen Einfluss auf die Dateiendung, aber immerhin ...
    Es wäre natürlich wesentlich smarter, wenn es dafür ein meta im head geben würde.

    Gruß Trixy-Rexy

    1. Hallo,

      ich habe jetzt ein böses Workaround für dieses Problem gebastelt. Wenn man strg drückt, ändere ich mittels Javascript den Title der Seite. Lässt man strg wieder los, wird der Ursprungstitel wieder gesetzt.

      willst du also während der Aktionskette 1. Klick auf "File" in der Menüleite, 2. Klick auf "Save As" im Menü die Ctrl-Taste gedrückt halten? - Kommt mir sehr umständlich vor.

      Passt für mich.

      Okay, wenn's nur für dich ist.

      Ist natürlich keine Allgemeingültige Lösung, da man theoretisch immer noch über die Maus speichern könnte.

      Äh, wie?

      Außerdem bleibt der Titel "entfernt", wenn man mittels strg+s in einen anderen Kontext springt

      Aaah, Ctrl-S. Das gibt's ja auch noch. Wäre mir nicht eingefallen.
      Dann nehme ich alles zurück und behaupte das Gegenteil.

      So habe ich zwar keinen Einfluss auf die Dateiendung, aber immerhin ...

      Stimmt, die wird dann in der Vorgabe immer .html oder .htm sein.

      Es wäre natürlich wesentlich smarter, wenn es dafür ein meta im head geben würde.

      Was willst du denn wirklich erreichen? Ich habe den Eindruck, das ist alles nur ein Workaround für ein Problem, das man vielleicht auch ganz anders anpacken könnte.

      Einen schönen Tag noch
       Martin

      --
      Motto der DIY-Anhänger: If it ain't broken, fix it until it is.
      1. Was ich wirklich erreichen will habe ich doch in meiner ersten Frage beschrieben?!

        Ich geh auf eine HTML Seite in meinem lokalen System. Diese Seite möchte ich abspeichern. Den Namen beim Speichern würde ich gerne per default festlegen. Im Moment orientiert sich der Name entweder am Title oder falls der Title fehlt ist der Default-Name = dem Scriptnamen. Das heißt, wenn der titel fehlt und das Script heißt "unerwuenscht.php", dann wird mir beim speichern "unerwuenscht.htm" vorgeschlagen. Sofern ich keinen Titel angebe passt das auch für mich. Aber ... um die Tabs besser im Browser zuordnen zu können, würde ich gerne Titel vergeben. Das hat aber wiederum Einfluss auf den default-Speichernamen.

        Das schreit alles nach einem meta-tag. Aber ich hab bislang kein funktionierendes gefunden.

        Deshalb, wenn du keins hast, dann habe ich die wohl beste Lösung für mich bereits umgesetzt. Deswegen ist die Frage auch im großen erledigt.

        Gruß T-Rex.php = T-Rex.htm

        1. Hallo,

          Was willst du denn wirklich erreichen?

          Was ich wirklich erreichen will habe ich doch in meiner ersten Frage beschrieben?!

          nein, du hast nur beschrieben, welche Methode dir eingefallen ist, um ein bestimmtes Ziel zu erreichen, und welches Defizit sie hat. Eine Webseite lokal zu speichern ist ein eher ungewöhnlicher Use Case. Wenn man das tut, hat man normalerweise sehr spezielle Ziele und Pläne. Also welche sind das? Vielleicht kannst du diese Ziele ja auf andere Weise viel effizienter erreichen.

          Ich geh auf eine HTML Seite in meinem lokalen System.

          Ah! Da haben wir doch schon ein wichtiges Stück Information. Also kein Webserver, kein HTTP beteiligt. Dann frage ich aber erst recht nach dem Sinn: Warum möchtest du eine Seite speichern, die du doch sowieso schon lokal in deinem Filesystem hast? Da wäre es doch viel einfacher, die im Dateimanager zu kopieren.

          Diese Seite möchte ich abspeichern. Den Namen beim Speichern würde ich gerne per default festlegen. Im Moment orientiert sich der Name entweder am Title oder falls der Title fehlt ist der Default-Name = dem Scriptnamen. Das heißt, wenn der titel fehlt und das Script heißt "unerwuenscht.php", dann wird mir beim speichern "unerwuenscht.htm" vorgeschlagen.

          Soweit klar. Aber wie kommt hier PHP ins Spiel? Also doch wieder HTTP? Ein lokaler Webserver?

          Sofern ich keinen Titel angebe passt das auch für mich. Aber ... um die Tabs besser im Browser zuordnen zu können, würde ich gerne Titel vergeben. Das hat aber wiederum Einfluss auf den default-Speichernamen.

          Ja. Und?

          Deshalb, wenn du keins hast, dann habe ich die wohl beste Lösung für mich bereits umgesetzt. Deswegen ist die Frage auch im großen erledigt.

          Für mich ist die Frage nach dem Sinn immer noch offen.

          Einen schönen Tag noch
           Martin

          --
          Motto der DIY-Anhänger: If it ain't broken, fix it until it is.
          1. Hallo,

            Für mich ist die Frage nach dem Sinn immer noch offen.

            Für mich klingt es so, als ob t-rex sich ein Versions-Archivsystem bastelt, in das nur ausgewählte und nur „funktionierende“ Dateienversionen kommen sollen.

            Gruß
            Kalk

        2. Martins Frage hat sehr wohl einige Berechtigung - was sich gleich zeigt:

          in meinem lokalen System ... "unerwuenscht.php"

          Es handelt sich also um eine eigene Webseite, die auf einem lokalem Server mit PHP läuft.

          Lösungsvorschlag:

          Bau einen Download-Button rein, der dazu führt, dass die Seite nochmals aufgerufen wird, hänge dabei einen Parameter wie ?download=1 an die URL und reagiere im Skript mit http-headern.

          Test und Quelltext:

          https://home.fastix.org/Tests/download_me.php

          (Ja! Das ist 1:1 mein Vorschlag für das explizite Download-Angebot.)

          1. Also in meinem Kopf sind viele Möglichkeiten zu Antworten. Da ich wie beschrieben einen für mich funktionierenden Weg gefunden habe, fasse ich mich kurz.

            Ich möchte niemanden vor den Kopf stoßen. Das man sich nach anderen Lösungsmöglichkeiten umschaut ist immer eine gute Idee. Ich weiß jedoch was ich Frage und was ich will. Einen Download-Link will ich nicht. Das hat auch seine Gründe, die ich nicht weiter erläutern will.

            Ich dachte in einer Welt wo es für Facebook, Twitter & Co. extra head-meta tags gibt, dass es auch einen meta-dings für den default Speicherdateinamen gibt.

            Gruß T-Dingsbums-meta-irgendwas-Rex

            1. Da ich wie beschrieben einen für mich funktionierenden Weg gefunden habe

              Naja. Es gibt immer mehrere Lösungen. Deine gefällt Dir? Dann bleibe doch bei Deinem „bösen Workaround“, also per JS den document.title zu ändern. (Was ist daran unter den gegebenen Umständen eigentlich „böse“?)

              (Meine Idee finden dann womöglich andere interessant, welche nach den Begriffen und eine ähnliche Lösung suchen. Übrigens kann man die auch mit JS an eine Tastenkombination binden…

              1. Ich finde es "böse", da der Titel in meiner Welt nichts mit dem Dateinamen zu tun haben sollte und diesen via JS kurz leer machen ist für mich keine gute Programmierart, da es nicht intuitiv ist.

                Das wäre so als ob du ein Auto mit dem öffnen des Aschenbecher startest ... kann man machen keine Frage, aber ist es logisch oder intuitiv? Wenn das Auto nicht mehr startet, wo ist der Fehler? Suchst du dann sofort im Aschenbecher danach?

                Deine Lösung ist toll, habe ich anderweitig schon öfters gemacht. Für mich taugt es an der Stelle aber nichts.

                Gruß das Ende der T-Rex-Stange