Download erzwingen
Martin Hein
- php
0 kobold
Hallo Forum,
ich benutze seit Ewigkeiten ein Script, dass ich selbst nicht
geschrieben habe. Ich hab mich nie grossartig mit dem Inhalt
auseinandergesetzt, denn es funktionierte immer. Nun gab es
gerade den Fall, dass es auf einem best. Rechner (winXP /IE 6)
nicht funktioniert hat, was ich mir nicht erklären kann ;(
Das Script soll einen Download erzwingen. Sprich: der Browser
soll nicht versuchen, die Datei selbst darzustellen, sondern
einen Download-Dialog starten. (Die Frage, ob das sinnvoll ist,
stellt sich nicht.)
Hier ist das Script:
--------------------
ini_set("memory_limit","50M");
if(!$filename)$filename = $file;
$size = filesize($file);
if (strpos($HTTP_USER_AGENT,"MSIE 5.5")>0||1==1)
{//IE5.5 + NS ab 4.0
$fp = fopen($file, "r");
$contents = fread($fp, $size);
fclose($fp);
header("Content-type: application/RFC822");
header("Content-Disposition: attachment; filename=$filename");
print($contents);
exit;
}
else
{//NS ab 4.0 & IE 5
header("Content-Type: application/octet-stream");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Transfer-Encoding: binary");
$fp = fopen($file, "r");
fpassthru($fp);
exit;
}
1. Wie lässt es sich so anpassen, dass es sicher auf allen Browsern
funktioniert ?
2. Ich habe eben die erste Zeile ini_set eingebaut, weil php
sich bei einem sehr grossen Download beschwerte. Habe ich damit
jetzt nur die merory_size bei der ausführung dieses script hoch
gesetzt oder pauschal und fliegt mir der server jetzt bald um die
ohren ?
besten dank und
viele gruesse,
martin
Hi,
ich benutze schon lange ohne Probleme folgendes Download-Skript:
$file = ...//Pfad zur Datei
// Header-Daten erzeugen
header("Content-Type: application/octet-stream");
header("Content-Length: ".filesize($file));
header("Content-Disposition: attachment; filename="".basename($file).""");
// Datei ausgeben.
readfile($file);
Mfg
Kobold