Das hat nichts mit HTML zu tun, sondern mit der Konfiguration des Servers und wie der Browser auf die Antwort des Servers reagiert.
Ich hol mal ein bisschen weiter aus...:
HTTP funktioniert nach dem challenge-response-Verfahren, d.h. der Browser sendet eine Anfrage an den Server und dieser antwortet ihm, wobei die Antwort aus zwei Teilen besteht, nämlich einem Head und einem Body.
Der Body enthält das, was man als Ergebnis im Browser sieht, also bspw. die/das angeforderte HTML-Seite/Bild/was-auch-immer.
Der Head enthält die Meta-Daten zum Body, neben dem Status der Antwort (z.B. 200 OK oder 404 Not Found) zählt u.a. auch der sog. Content-Type dazu, der den Typ des Bodys angibt (bspw. image/jpeg für JPEG-Bildchen, text/html für HTML-Dokumente etc.):
Code:
HTTP/1.x 200 OK
Content-Type: text/html; charset=ISO-8859-15
Entscheidend für dein Vorhaben ist, wie der Browser auf eben diesen Content-Type reagiert, bei text/html, image/jpeg und zahlreichen anderen Typen öffnet der Browser den Body - sprich er zeigt ihn an, bei application/octet-stream hingegen bietet er den Body i.d.R. zum Download an. Du bist also in gewissen Grenzen auf die Einstellung des Browsers angewiesen, wenn du möchtest, daß er ihn zum Download anbieten und nicht automatisch anzeigen soll.
Zahlreiche Browser (eigentlich alle aktuellen) verstehen aber zusätzlich noch einen Header, der aus der Welt der Emails statt, nämlich Content-Disposition. Mit diesem Header kannst du beeinflussen, ob die Datei zum Download angeboten (
inline) oder angezeigt werden soll
attachment:
Download erzwingen, obwohl es ein JPEG-Bildchen ist
Code:
HTTP/1.x 200 OK
Content-Type: image/jpeg
Content-Disposition: attachment
Zusätzlich läßt sich mit
filename der Dateiname vorgeben, falls er vom Dateinamen im URL abweicht bzw. abweichen soll:
Code:
HTTP/1.x 200 OK
Content-Type: image/jpeg
Content-Disposition: attachment;filename=anton.jpg
Wenn du also Dateien anbieten willst, die üblicherweise vom Browser (oder Plugins) geöffnet werden, muß du mit Hilfe eines Programms den Header beeinflussen, dazu reichen aber einige Zeilen Perl/PHP/Python oder was immer auf dem Server als Programmiersprache installiert ist. Sollen hingegen nur Dateien angeboten, die i.d.R. vom Browser nicht geöffnet werden (können), kannst du die Dateien as-is zum Download bereit stellen (vorausgesetzt der Server ist nicht falsch konfiguriert...)
greetings, Keita