Hallo,
ich habe vor ein paar Tagen schonmal wegen einem Downloadscript um Hilfe gebeten. Es ging um ein paar Verständnisfragen.
Eigentlich dachte ich das ich es gerafft habe, aber leider will es nicht funktionieren.
Also gegeben sei der Fall das die Dateien zum Download folgende Pfadangaben haben: /ordner/download/
Das Download-Script hat den Namen download.php und den Pfad /ordner
Aufruf für den Download von Datei_1.zip ist
download.php?download=2881
Es wird zwar der Download-Dialog vom Browser aufgemacht, und speichern kann ich auch, aber leider wird nur eine 1 kb große Datei mit dem Namen der Datei gespeichert.
Frage 1: Was ist an diesem Quellcode falsch ?
<?
$download = $_GET['download'];
$basedir = "/ordner";
$filelist = array(
"2881" => "download/Datei_1.zip",
"2882" => "download/Datei_2.zip",
"2883" => "download/Datei_3.zip",
"2884" => "download/Datei_4.zip"
);
if (!isset($filelist[$download]))
die("Datei $download ist nicht vorhanden.");
$filename = sprintf("%s/%s", $basedir, $filelist[$download]);
header("Content-Type: application/zip");
$save_as_name = basename($filelist[$download]);
header("Content-Disposition: attachment; filename="$save_as_name"");
readfile($filename);
?>
Frage 2:
Eigenlich wollte ich es so haben wie bei der Seite
http://www.winload.de/
Dort klickt man auf download, dann öffnet sich ein Fenster wo man den Speicherort auswählen kann und gut.
Beim Internet Explorer klappt es mit meinem Script genauso, aber beim Mozilla erkennt der Browser das Dateiformat nicht und muß mich vorher nochmal fragen was ich damit machen will, also speichern oder mit bestimmten Programm öffnen. Woran kann das liegen ? Ich habe es auch schon mit header("Content-Type: application/octet-stream"); ausprobiert.
Da passiert dasselbe.
An meinem Mozilla kann der Fehler nicht liegen, weil *.zip Dateien von http://www.winload.de/ auch erkannt werden.
mfg
Johann