HTML/Tutorials/Links/Programme ausführen
Sie können auf jede beliebige Datei (Audio-Dateien, Tabellenkalkulations-Dateien, CAD-Dateien, Videodateien, Grafikdateien, Textverarbeitungs-Dateien, Programmdateien, und auch Datenbankdateien) einen Verweis setzen. Aus Sicht von HTML ist das kein Problem.
Das Problem besteht darin, was der Web-Browser des Anwenders mit den Dateien anfangen kann, bzw. wie er ihren Inhalt korrekt anzeigen oder abspielen lassen kann. Reine Textdateien (*.txt), PDFs, die meisten Grafikformate, audio und video-Dateier kann der Web-Browser selbst anzeigen.
Inhaltsverzeichnis
Office-Programme ausführen
Wenn der Anwender ein Programm besitzt, das den Dateityp verarbeiten kann, und dem Web-Browser ist die Verknüpfung zwischen Dateien mit der Endung des Verweisziels und einem Programm bekannt, das solche Dateien verarbeitet, dann kann der Browser das Programm starten. Wenn das Betriebssystem, der Web-Browser und das andere Programm den dynamischen Datenaustausch zwischen Programmen erlauben, kann das Anzeigefenster des Fremdprogramms in das Browser-Fenster eingebettet werden. Es gibt jedoch keine Möglichkeit, solche Dinge in irgendeiner Weise als Web-Autor zu beeinflussen.
Früher war dies die Standardantwort auf die Frage, ob man z. B. Word-Dateien im Browser ausführen könne.
Mittlerweile gibt es neben Googles Docs Online Viewer, Microsofts Doc Viewer Free viele weitere Plugins, die solche Dateien ausführen können.
Wenn der Browser mit dem Dateityp gar nichts anfangen kann, sollte er dem Anwender diese Datei zum Download anbieten, was Sie mit dem Download-Attribut erzwingen können.
Um dem Browser die Entscheidungsaufgabe zu erleichtern, um welche Art von Datei es sich handelt, können Sie den MIME-Typ der Datei angeben, auf die Sie verweisen.
<h2>Verweis auf eine Excl-Datei</h2>
<p>
<a href="einsundeins.xls" type="application/msexcel">einsundeins.xls</a>
(Excel-Datei, 9kb)
</p>
Durch die Angabe des MIME-Types application/msexcel
erkennt der Browser, dass es sich um eine Datei für eine Tabellenkalkulation handelt.
ausführbare Programme ausführen
Wenn Sie einen Verweis auf eine ausführbare Datei wie notepad.exe oder winword.exe legen, wird der Browser diese Datei stets zum Download anbieten, aber ganz sicher nicht ausführen. Der Grund ist, dass Web-Browser und auch HTML für den Client-Server-Betrieb im Internet ausgelegt sind, nicht aber für das unbedenkliche lokale PC-Umfeld. Denn wenn die notepad.exe ausführbar wäre, dann wäre auch die format.com ausführbar, und wäre ein Verweis in der Lage, Ihre Festplatte neu zu formatieren.
Download-Link anbieten
Durch die Angabe eines download-Attributs öffnet sich ein Fenster, bei dem sich der Benutzer entscheiden kann, die Zieldatei im Browser (mit einem vom Browser vorgeschlagenen Programm) zu öffnen oder auf der Festplatte zu speichern. Browser erkennen manche Dateiendungen wie .zip oder .pdf von selbst und öffnen eine Dialog-Box mit Optionen.
Früher wurden solche Download-Links oft über FTP realisiert. Da diese Übertragung aber nicht verschlüsselt werden kann, haben mittlerweile Chrome (seit Version 72) und Firefox (seit FF90) die Unterstützung entfernt. Verwenden Sie für Download-Links einen Link über HTTPS.
<h1>Ein Download-Link-Verweis</h1>
<figure>
<a href="https://wiki.selfhtml.org/images/3/31/Hund.gif" download>
<img src="https://wiki.selfhtml.org/images/3/31/Hund.gif" alt="Hund.">
</a>
<figcaption>Klicken Sie zum Download (GIF, 2.268 Byte)</figcaption>
</figure>
<hr>
<p>
Das Template Nr. 01 können Sie kostenfrei
<a href="https://…" download="SELFHTML-Design-01.zip">
herunterladen
</a>. (ZIP, 97kB, MD5-Prüfsumme: 7fe40233ae8350fbbe46001e0d9c372b)
</p>
Beim Ausführen der Links wird in Abhängigkeit von den Browsereinstellungen die Ressource direkt gespeichert oder zum Download angeboten. Für den zweiten Link wird durch den Wert des download-Attributes ein Dateiname vorgeschlagen.
Wenn man Zugriff auf den Server hat, kann man HTTP-Header senden, die
- die Datei als „Anhang“ (`attachment`) kennzeichnen
- dem Browser vorgaukeln, es handle sich um eine Binärdatei unbekannten MIME-Typs.
$path = './download/mp3/song.mp3';
$filename = preg_replace('~^.*/~', '', $path);
// this (optional) header forces a download dialog in the browser
header('Content-Type: application/octet-stream');
header(sprintf(
'Content-Disposition: attachment; filename="%s"',
$filename
));
header('Content-Transfer-Encoding: binary');
header('Content-Description: File Transfer');
header('Content-Length: '.fsize($path));
header('Accept-Ranges: bytes');
readfile($path);
exit;