Seite wechseln nach "force download" einer datei
mabuhay
- php
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
hi,
Geht das überhaupt, nachdem der Header für den Download gesetzt wurde noch die URL zu ändern?
"Geht" schon, ist aber Blödsinn bzw. führt ganz sicher nicht zum gewünschten Ergebnis.
gruß,
wahsaga
Hi
"Geht" schon, ist aber Blödsinn bzw. führt ganz sicher nicht zum gewünschten Ergebnis.
Hmmm... Ich wollte nach dem Download Hinweise zur Datei anzeigen oder auf die Seite weiterleiten mit Informationen zur Verwendung. Ist aber nicht so wichtig und deiner Antwort kann ich entnehmen dass es auch nicht eine gute Sache ist...
Mein grösseres Problem ist die Sache mit dem "Öffnen mit..."
mfg
Thomas
hi,
Hmmm... Ich wollte nach dem Download Hinweise zur Datei anzeigen oder auf die Seite weiterleiten mit Informationen zur Verwendung.
Du kannst diese Seite vorher anzeigen ...
In die Seite ein Meta-Refresh, der auf die Download-Adresse "umleitet" - dabei bleibt diese Seite natürlich bestehen.
Die Download-Adresse in der Seite nochmals zu verlinken, für Nutzer die Meta-Refresh deaktivert haben, ist natürlich ratsam.
gruß,
wahsaga
Hi
Etwas verstehe ich noch nicht ganz. Ich hab meine Index-Datei:
<?php include ("download/header.forcedownload.php");?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
usw.
die forcedownload.php wird nur ausgeführt, wenn auch ein Download gewünscht ist, also wenn der Download-Link angeklickt wird. Klicke ich aber den Link an, öffnet sich nur das "Öffnen von xyz"-Popup, es wird aber keine Neue Seite mit dem per header("") usw. gesetzten Header geöffnet, die alte Seite bleibt bestehen wie sie ist.
mfg
mabuhay
hi,
Klicke ich aber den Link an, öffnet sich nur das "Öffnen von xyz"-Popup, es wird aber keine Neue Seite mit dem per header("") usw. gesetzten Header geöffnet, die alte Seite bleibt bestehen wie sie ist.
Entweder neue Seite, oder Download.
Beides als Antwort auf _einen_ Request geht nicht.
gruß,
wahsaga
Klicke ich aber den Link an, öffnet sich nur das "Öffnen von xyz"-Popup, es wird aber keine Neue Seite mit dem per header("") usw. gesetzten Header geöffnet, die alte Seite bleibt bestehen wie sie ist.
Entweder neue Seite, oder Download.
Beides als Antwort auf _einen_ Request geht nicht.
kk
Vielen Dank für deine Antworten. Ist das erste mal das ich so was mach, jetzt hab ich ein bisschen den durchblick ;)
mfg
mabuhay