HTML/Tutorials/Links/Programme ausführen

Aus SELFHTML-Wiki
HTML‎ | Tutorials‎ | Links(Weitergeleitet von Download)
Wechseln zu: Navigation, Suche

Du kannst auf jede beliebige Datei (Audio-Dateien, Tabellenkalkulations-Dateien, CAD-Dateien, Video-Dateien, Grafik-Dateien, Textverarbeitungs-Dateien, Programm-Dateien und auch Datenbank-Dateien) 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-Dateien kann der Web-Browser selbst anzeigen.

Office-Programme ausführen

Wenn auf dem Gerät ein passendes Programm installiert ist, kann der Browser die Datei herunterladen oder an dieses Programm übergeben. Ob sie im Browser, in einer Web-App oder in einem externen Programm geöffnet wird, hängt von Browser, Betriebssystem und den Einstellungen ab. 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 anzeigen oder bearbeiten können.

Wenn der Browser mit dem Dateityp gar nichts anfangen kann, sollte er dem Anwender diese Datei zum Download anbieten, was du mit dem Download-Attribut anregen kannst.

Um dem Browser die Entscheidungsaufgabe zu erleichtern, um welche Art von Datei es sich handelt, kannst du den MIME-Typ der Datei angeben, auf die du verweist.

Link mit passendem MIME-Type
<h2>Verweis auf eine Excel-Datei</h2>
<p>
  <a href="einsundeins.xls" type="application/msexcel">einsundeins.xls</a> 
  (Excel-Datei, 9kb)
</p>

Durch die Angabe des MIME-Typs application/msexcel erkennt der Browser, dass es sich um eine Datei für eine Tabellenkalkulation handelt.

ausführbare Programme ausführen

Wenn du einen Verweis auf eine ausführbare Datei wie notepad.exe oder winword.exe legst, wird der Browser diese Datei stets zum Download anbieten, aber ganz sicher nicht direkt 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 könnte ein Verweis z. B. deine Festplatte 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. Verwende für Download-Links einen Link über HTTPS.

Beachte: Das download-Attribut wird von aktuellen Browsern nur beachtet, wenn das Verweisziel den gleichen Origin wie die Verweisquelle hat (Same-Origin-Policy), oder wenn es sich um eine data:- oder blob:-URL handelt.
Download-Linkanzeige ansehen …
<h1>Ein Download-Link-Verweis</h1> 
<figure> 
    <a href="/Hund.svg" download>
        <img src="/Hund.svg" alt="Hund" width="200">
    </a> 
    <figcaption>Zum Download klicken (SVG, 2.268 Byte)</figcaption>
</figure> 
<hr>
<p> 
    Das Template Nr. 01 kannst du 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-Attributs ein Dateiname vorgeschlagen.

Wenn du Zugriff auf den Server hast, kannst dun HTTP-Header senden, die

  • die Datei als „Anhang“ (`attachment`) kennzeichnen
  • dem Browser signalisieren, es handle sich um eine Binärdatei unbekannten MIME-Typs.
Beispiel
$path = './download/mp3/song.mp3';
$filename = preg_replace('~^.*/~', '', $path);

// Dieser optionale Header fordert einen Download-Dialog im Browser an
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: '.filesize($path));
header('Accept-Ranges: bytes');

readfile($path);

exit;