Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Download Skript und IE7
bugmenot
19-01-2008, 22:10
Habe über PHP (genauer Punbb Forensoftware) ein Skript laufen, welches upload und download managet. So weit, so gut. Bisher alles bestens. Dachte ich jedenfalls.
Aber mit dem IE7 gibt es ein Problem. Er macht beim Download schlichtweg nix.
Das Skript ist so gestrickt, dass die User nicht direkt auf das Verzeichnis zugreifen sollen. Stattdessen sieht der Link etwa so aus:
http://domain.com/script.php?file=dateiname.pdf
Während IE6 und Moz/FF das wunderbar öffnen, bekommt es nur der IE7 nicht hin. Wenn man im IE7 dagegen den direkten Pfad zur gleichen Datei (also inkl. Verzeichnis) angibt, geht es.
Jetzt frage ich mich, warum der IE7 das mit dieser Parameterübergabe nicht hinbekommt. Habt Ihr eine Idee?
überprüfe mal die header-angaben oder probiers mal modrewrite
Finde keinen Fehler in den headern :(
header('Content-Disposition: inline; filename='.$file_name);
header('Content-type: '.$type);
header('Pragma: no-cache');
header('Expires: 0');
header('Connection: close);
header('Content-Length: '.$file_size);
Keiner ne weitere Idee?
musst schon den quelltext angeben, sonst wrid dir keiner helfen können..
welches upload und download managet.
managet was soll den das heißen?
Also zum Quelltext: Ich weiß jetzt nicht, was Du genau meinst.
Am Anfang überprüft das Script halt den MIME Type und legt den fest. Das klappt. Sonst würde es ja auch nicht in allen anderen Browsern einwandrei laufen (inkl. IE5/6).
Dann gibt es da oben erwähnte Header. Und zum Schluss wird das ganze über die PHP Funktion fpassthru($variable) weitergeleitet.
Hilft Dir das?
managet = mir fiel kein deutsches Wort ein, das to manage entspricht. Von mir aus übersetz es mit bewerkstelligt. ;)
Also zum Quelltext: Ich weiß jetzt nicht, was Du genau meinst.
Am Anfang überprüft das Script halt den MIME Type und legt den fest. Das klappt. Sonst würde es ja auch nicht in allen anderen Browsern einwandrei laufen (inkl. IE5/6).
Dann gibt es da oben erwähnte Header. Und zum Schluss wird das ganze über die PHP Funktion fpassthru($variable) weitergeleitet.
Hilft Dir das?
managet = mir fiel kein deutsches Wort ein, das to manage entspricht. Von mir aus übersetz es mit bewerkstelligt. ;)
na damit mein ich natürlich den php quelltext. post ihn doch hier einfach mal.
dann sieht man ob noch fehler drin sind.
außerdem wäre es hilfreich zu wissen was der ie7 stattdessen macht (abstürzen, die datei im ie fenster anzeigen oder was?)
// send some headers
if (
preg_match('/.jpeg/', $file_name) ||
preg_match('/.jpg/', $file_name)
) {
$c_type = 'image/jpeg';
}
else if (preg_match('/.png/', $file_name))
$c_type = 'image/png';
else if (preg_match('/.gif/', $file_name))
$c_type = 'image/gif';
else if (preg_match('/.txt/', $file_name))
$c_type = 'text/plain';
else if (preg_match('/.rtf/', $file_name))
$c_type = 'text/rtf';
else if (preg_match('/.pdf/', $file_name))
$c_type = 'application/pdf';
else if (preg_match('/.doc/', $file_name))
$c_type = 'application/msword';
else if (preg_match('/.sxw/', $file_name))
$c_type = 'application/vnd.sun.xml.writer';
else if (preg_match('/.zip/', $file_name))
$c_type = 'application/zip';
else if (preg_match('/.gz/', $file_name))
$c_type = 'application/gzip';
else if (preg_match('/.eps/', $file_name))
$c_type = '';
else if (preg_match('/.tar/', $file_name))
$c_type = 'application/x-gtar';
header('Content-Disposition: inline; filename='.$file_name);
if ($c_type == '') {
$c_type = 'application/octet-stream';
}
header('Content-type: '.$c_type); // a default mime if nothing is defined for the file
header('Pragma: no-cache'); //hmm, I suppose this might be possible to skip, to save some bw, but I'm far from sure, so I let the 'no cache stuff' be...
header('Expires: 0');
header('Connection: close'); // Thanks to Dexus for figuring out this header (on some systems there was a delay for 5-7s for downloading)
if($file_size!=0)
header('Content-Length: '.$file_size);
// and finally send the file, fpassthru might be replaced later, rumors say fpassthru use alot of memory...
fpassthru($fp);
}
So, und der IE 7 öffnet dann einfach ein leeres, weißes Fenster. Dann passiert nix. Keine Fehlermeldung. Gar nix. :(
undefined
16-02-2008, 15:54
ich gehe mal davon aus weil wegen header('Connection: close'); ein Brocken Header ankommt.
Nee, wenn ich das raus nehme, ändert sich ja auch nix.
if($file_size!=0)
header('Content-Length: '.$file_size);
wird $file_size vorher irgendwo gesetzt?
ja. wird gesetzt.
schau wenn du nicht den gesamten code postest isses für uns nur schwer dir zu helfen. und wo file_size gesetzt wird ist in deinem code leider nicht enthalten.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.