Download erzwingen
Thomas
- html
0 Oma Inge0 Christian Kruse1 Christoph
Hallo
Gibt es eine Möglichkeit dem Browser mittels HTML oder JS zu sagen, dass er den erwähnten Link zwingend als Downloaden soll? Habe ein Link auf ein JPG-Bild. Klickt jemand darauf, möchte ich, dass sich der Download-Dialog öffnet und nicht das das Bild im Browserfenster sich öffnet.
Wie mache ich sowas?
Danke für eure Tipps.
Gruss
Thomas
Wie mache ich sowas?
你好 Thomas,
Gibt es eine Möglichkeit dem Browser mittels HTML oder JS zu sagen, dass er den erwähnten Link zwingend als Downloaden soll? Habe ein Link auf ein JPG-Bild. Klickt jemand darauf, möchte ich, dass sich der Download-Dialog öffnet und nicht das das Bild im Browserfenster sich öffnet.
Nun, genau genommen wird jeglicher Inhalt heruntergeladen, bevor er angezeigt wird (wobei, inzwischen gilt: während er angezeigt wird).
Wenn du meinst, du willst den Datei-Speichern-Dialog erzwingen: das geht nicht wirklich. Du kannst es zwar versuchen, in dem du Header wie
Content-Disposition: file; filename=dateiname
sendest, aber ob der Browser dann auch wirklich den Dialog anzeigt, kannst du nicht beeinflussen.
再见,
克里斯蒂安
Mahlzeit Christian Kruse,
Du kannst es zwar versuchen, in dem du Header wie
Content-Disposition: file; filename=dateiname
sendest, aber ob der Browser dann auch wirklich den Dialog anzeigt, kannst du nicht beeinflussen.
Als Ergänzung hierzu:
Da Thomas' Frage war, ob man "mittels HTML oder JS" das Speichern erzwingen könnte, müsste die Antwort darauf korrekterweise "Nein" lauten ... man muss schon Zugriff auf Konfigurationsmöglichkeiten des Webservers (direkt oder mittels einer serverseitigen Programmiersprache wie z.B. PHP o.ä.) haben, um entsprechende HTTP-Header senden zu können.
MfG,
EKKi
Grüße,
Da Thomas' Frage war, ob man "mittels HTML oder JS" das Speichern erzwingen könnte, müsste die Antwort darauf korrekterweise "Nein" lauten
außer man benennt die .jpg datei in etwas exotisches um (bild.f4kup) - mit sehr hoher wahrscheinlichkeit wird der browser versuchen es runterzuladen, sofern für die dateiendung kein programm zugewiesen ist?
MFG
bleicher
Hallo,
»» Da Thomas' Frage war, ob man "mittels HTML oder JS" das Speichern erzwingen könnte, müsste die Antwort darauf korrekterweise "Nein" lauten
außer man benennt die .jpg datei in etwas exotisches um (bild.f4kup) - mit sehr hoher wahrscheinlichkeit wird der browser versuchen es runterzuladen, sofern für die dateiendung kein programm zugewiesen ist?
bei diesem Vorschlag muss man zwischen Internet Explorer und dem Rest der Welt unterscheiden. Bei einer exotischen Dateiendung wird der Server wohl erstmal keine Idee haben, was für ein MIME-Typ da richtig sein könnte, also dürfte er application/octet-stream angeben.
Ein Internet Explorer gibt traditionell nicht so viel auf MIME-Typen, sondern kuckt lieber auf die "Datei"-Endung (die er in diesem Fall auch nicht einordnen kann) oder analysiert sogar die ersten paar Bytes des Dateiinhalts. Mit großer Wahrscheinlichkeit stellt er also fest: Is'n JPEG-Bild. Und das zeigt er dann stolz an.
Andere Browser vertrauen auf den MIME-Typ, kümmern sich weder um den Namen noch den Inhalt der Ressource, sondern fragen anständig nach, wo sie die Daten speichern sollen.
So long,
Martin
Moin.
Wenn du meinst, du willst den Datei-Speichern-Dialog erzwingen: das geht nicht wirklich. Du kannst es zwar versuchen, in dem du Header wie
Content-Disposition: file; filename=dateiname
sendest [...]
Bist du sicher, dass du nicht
Content-Disposition: attachment; filename=dateiname
meinst? Der Wert file
ist mir in diesem Zusammenhang bisher noch nicht begegnet.
Christoph
你好 Christoph,
Bist du sicher, dass du nicht
Content-Disposition: attachment; filename=dateiname
meinst?
Ja, selbstverständlich. Danke für die Verbesserung.
再见,
克里斯蒂安
Moin.
Gibt es eine Möglichkeit dem Browser mittels HTML oder JS zu sagen, dass er den erwähnten Link zwingend als Downloaden soll?
Es gibt die Möglichkeit, dem Link ein type
-Attribut mitzugeben:
<a href="foo.jpg" type="application/octet-stream">foo</a>
Da der Mime-Type application/octet-stream
unspezifizierte Binärdaten kennzeichnet, sollte der Browser die verlinkte Ressource zum Herunterladen anbieten.
Das Problem dabei ist, dass Browser die Angabe entweder gar nicht beachten (IE, Opera) oder dem HTTP-Header Vorrang geben (siehe z.B. hier).
Christoph