HTML Download erzwingen

  • Hey,
    ich hoffe mal, dass das der richtige Bereich dafür ist, ich denke aber schon ^^


    Ich hab das schon gegoogelt/gegooglet/was weiß ich, wie man das schreibt, aber nichts gefunden.
    Die Frage ist folgende: Ich habe einen Downloadlink zu einer Datei auf meiner Seite. Wenn man da draufklickt, und der Browser den Dateityp kennt, öffnet er die Datei allerdings direkt im Browser. Könnt ihr mir sagen, wie ich das ändern kann? Die Seite is ein Filehosting-Dienst für meine Schule und es muss daher mit allen Dateitypen funktionieren ^^


    Danke schonmal :)

  • Ich programmiere im Moment bei einem One-Click-Hoster mit und wir machen den Download über AJAX. D.h. wir laden die einzelnen Chunks über AJAX / XMLHttpRequests herunter und legen alles in einem Blob object ab. Das ganze wird anschließend über die FileSaver.js Library (google hilft dir da!) herunter. Diese Methode ist um einiges komplexer in der Programmierung, aber dafür hast du deutlich mehr Möglichkeiten und du hast nicht solchen Ärger wie du ihn beschrieben hast. Alternativ kannst du auch die ganze Datei direkt über AJAX herunterladen, nicht in mehreren Chunks. Ich weis aber nicht wie sich das performance technisch bei größeren Dateien verhält :D Auch musst du auf die RAM Last achten und ggf. die Filesystem-Library von Javascript nutzen um temporär Blobs abzulegen.


    MfG

  • html selbst kann dir dabei nicht weiter helfen, ist ja nur ne Auszeichnungssprache.
    Über PHP geht es hingegen recht einfach. Über die "header"-Funktion kann man unter anderem dafür sorgen, dass ein download erzwungen wird.


    Eine etwas unschönere Lösung, falls dein Server kein php kann:
    lege eine .htaccess-Datei im Verzeichnis der zu downloadenden Datei an und setzte in dieser den MIME-Type auf einen binären. Dies sollte den Browser ebenfalls dazu bringen, die Datei zu downloaden.

    Users[4939].postCount++;


    • Weltherrschafts AG in Cooperation mit Weltuntergangs GmbH:
      "Wir sorgen dafür, dass sie sich keine Sorgen um Morgen machen müssen!"