Hi
Ich habe ein force download Script und möchte danach, wenn der Download abgeschlossen oder bestätigt wurde oder auch nur nachdem der Download Link angeklickt wurde, eine neue Seite anzeigen.
Geht das überhaupt, nachdem der Header für den Download gesetzt wurde noch die URL zu ändern? Oder gibt es eine bessere Lösung?
Ein weiteres Problem hab ich mit Firefox. Wird der Download Dialog z.B. eines *.zip Files geöffnet und ich wähle "Öffnen mit WinZip" anstelle von "Auf Diskette/Festplatte Speichern", ist der Download immer fehlerhaft. Klick ich dann im Firefox Fenster wo alle Downloads angezeigt werden auf "Nochmals Versuchen", wird die index.php heruntergeladen anstelle des *.zip-Files.
Kennt jemand dieses Problem oder eine Lösung?
Die Seite befindet sich auf: http://test.thnaeff.ch/mytinyarchive
Ein Beispiel für den Download hier: http://test.thnaeff.ch/mytinyarchive/?content=programme.grafikrechner.thedb.download
Dies ist das Script:
<?php
/*
* Idea for the script from: http://elouai.com/force-download.php
*
*/
if ( isset($_GET['download']) ) {
$filename = "files/" . $_GET['download'];
// required for IE, otherwise Content-disposition is ignored
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
// addition by Jorg Weske
$file_extension = strtolower( substr(strrchr($filename, "."), 1) );
if( $filename == "" ) {
echo "<html><title>eLouai's Download Script</title><body>ERROR: download file NOT SPECIFIED. USE force-download.php?file=filepath</body></html>";
exit;
} elseif ( ! file_exists( $filename ) ) {
echo "<html><title>eLouai's Download Script</title><body>ERROR: File not found. USE force-download.php?file=filepath</body></html>";
exit;
};
switch( $file_extension ) {
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false); // required for certain browsers
header("Content-Type: $ctype");
// change, added quotes to allow spaces in filenames, by Rajkumar Singh
header("Content-Disposition: attachment; filename=\"" . basename($filename) . "\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($filename) );
readfile("$filename");
}
?>
Danke schon im Voraus