Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 12. August 2015 20:50

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Download von Dateien erzwingen

Man steht immer wieder mal vor der Situation (so wie ich gerade eben), dass man den Besuchern einer Webseite Dateien zum Download anbieten will, die aber primär im Browser angezeigt werden (können), also PDFs, Bilder, Filme etc.

Am elegantesten lässt sich das über einen Eintrag in der .htaccess Datei bewirken

<FilesMatch "\.(?i:pdf)$">
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</FilesMatch>

Damit wird der Webserver einfach jede Datei mit der definierten Endung als Datenstrom / Download ausliefern. Und das "i" sorgt dafür, dass sämtliche Variationen in der Schreibweise abgefangen werden, also pdf, PDF, Pdf usw.

Voraussetzung ist, dass auf dem Server der mod_headers aktiviert ist, ansonsten gibt es einen 500er Fehler. Aber Achtung, auch diese Klippe lässt sich ggf. noch umschiffen. Manche Provider wie z.Bsp. 1&1 bieten das dynamische Nachladen von Modulen via .htaccess an

LoadModule headers_module modules/mod_headers.so

Einfach mal in deren FAQs schauen (oder den Support nackich machen wink).

Wenn ihr das nicht pauschal für das ganze System so haben wollt, sondern nur für ein paar bestimmte Dateien, legt die htaccess mit dem oben beschriebenen Eintrag einfach in das jeweilige Verzeichnis der Dateien, die zum Download angeboten werden sollen.

Sollen mehrere Dateitypen zum Download angeboten werden, lässt sich obiger Eintrag einfach erweitern

<FilesMatch "\.(?i:pdf|jpg|gif|mov|mp3|mp4|avi|wmv)$">
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</FilesMatch>

PS: Ja, ich weiß, wir hatten das Thema schon mehrfach im Forum, wollte es aber noch mal unter einem eigenen Topic festhalten wink.

Offline

#2 12. August 2015 21:18

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.927
Webseite

Re: Download von Dateien erzwingen

Danke für die Zusammenfassung.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#3 12. Januar 2022 11:16

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: Download von Dateien erzwingen

Andynium schrieb:

Man steht immer wieder mal vor der Situation (so wie ich gerade eben), dass man den Besuchern einer Webseite Dateien zum Download anbieten will, die aber primär im Browser angezeigt werden (können), also PDFs, Bilder, Filme etc.

Am elegantesten lässt sich das über einen Eintrag in der .htaccess Datei bewirken

<FilesMatch "\.(?i:pdf)$">
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</FilesMatch>

Uralt, ich weiß - hab es aber gerade wieder mal gebraucht  big_smile .

Natürlich hat HTML5 dafür auch eine deutlich modernere Antwort... mit dem Link-Attribut download. Sieht dann so aus:

[== html ==]
<a href="uploads/files/mein_1millioneneurogeschaeft.pdf" download>Referenz für Geschäfte ab 1 Mio Euro</a>

Lässt sich über den Parameter more auch ganz einfach mit cms_selflink nutzen.

Möchte man einen anderen Dateinamen mitgeben, ergänzt man das Attribut „download“ mit einem Attributwert. Dem Nutzer wird dann "nicht_dein_1millioneneurogeschaeft.pdf" als Dateiname vorgeschlagen.

[== html ==]
<a href="uploads/files/mein_1millioneneurogeschaeft.pdf" download="uploads/files/nicht_dein_1millioneneurogeschaeft.pdf">Referenz für Geschäfte ab 1 Mio Euro</a>

Dies klappt auch für andere Dateiendungen wie zum Beispiel bei Bildern mit ".jpg" und Texten mit ".txt".

Offline