Wie baue ich in HTML das download-Attribut richtig ein?
Ich möchte auf meiner Webseite einen Link einbinden, über den man ein Bild herunterladen kann. Leider funktioniert das nicht, obwohl ich es genauso wie in den Tutorials mache. Das Bild wird erkannt und wenn man auf den Link klickt, wird bloß im selben Tab das Bild geöffnet, aber nicht heruntergeladen...
Source-Code:
<a href="media/img/restaurant.png" download> Download </a>
2 Antworten
Sofern du deine Webseite testest, ohne sie dafür über einen Webserver ausspielen zu lassen (in der Adresszeile hättest du folglich eine file:///-Adresse), wird dein Browser die Anzeige des Download-Dialogs verhindern.
Benutze für Tests also auch einen Webserver. Sei es der IIS (Windows), der Apache Server aus dem Softwarepaket XAMPP, ein einfacher Node.js-Server oder irgendein anderer.
Es dürfte mit der Same-Origin-Policy zusammenhängen. Der Download setzt voraus, dass die Datei von derselben Domain kommt. Wenn das HTML-Dokument allerdings über das file:///-Protokoll geladen wird, kann der Browser keine Domain erkennen.
Die von mir genannten Optionen sind allesamt kostenlos. Es handelt sich um Anwendungen, die du auf deinem Rechner installierst. Das heißt, die Webseite lässt sich durchaus lokal testen, aber eben nur über den Webserver.
Auf Windows reicht eine Standardinstallation der IIS-Features. Lediglich Abschnitt 1 und 3 dieses Artikels sind dafür relevant. Entweder du kopierst dir deine Seite danach in das Verzeichnis der Default-Webseite und rufst sie im Browser via http://localhost/deineseite.html auf oder du gehst noch weiter und erstellst im IIS Manager noch eine eigene Site (lies hier; nur Schritt 1-7, das HTTP-Protokoll sollte genügen) mit eigener Domain. Die gewählte Domain sollte in der hosts-Datei (lies hier) eingetragen werden:
127.0.0.1 deine-domain
Öffne danach deinen Browser und rufe die Seite über die Domain auf http://deine-domain/deineseite.html.
Noch zur zweiten Option (Apache-Webserver): XAMPP installieren und über das Control Panel den Apache Server starten. Deine Webseite legst du in das htdocs-Verzeichnis (das liegt im XAMPP-Installationsordner). Wenn du eine eigene Domain (statt localhost) verwenden möchtest, lies hier. Ansonsten erfolgt der Aufruf im Browser wie schon bei der IIS-Option über http://localhost/deineseite.html.
Modernizer Javascript eingebunden? Kann sein, dass dies noch nicht von allen Browsern unterstützt wird.
Hier im Video bei 2:21 hat es funktioniert. https://youtu.be/jlDfT57QzP4?t=141
Hast du es so gemacht wie hier https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_a_download2 - Falls nicht probier das. Ansonsten mach das über XAMP oder einen Server. Lokal kann nichts "heruntergeladen" werden.
Du meinst, einen Wert für das Attribut download angeben? Ja, das hab ich schon versucht. Funktioniert leider auch nicht. Im Video wird auch erklärt, dass das optional ist, wenn der Web-Entwickler möchte, dass die Datei unter einem bestimmten Namen gespeichert werden soll. (Auch Änderung der extension möglich) Ich denke wirklich, dass es nicht funktioniert, weil die Webseite nicht über einen Server aufgerufen wird. regex9 erklärte dies auch schon.
Warum funktioniert es nicht, wenn ich meine Webseite lokal aufrufe? Kostet ein Webserver nicht etwas?