mabuhay: Seite wechseln nach "force download" einer datei

Beitrag lesen

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