Anzeige:
Ergebnis 1 bis 14 von 14

Thema: Problem mit Download Skript und IE7

  1. #1
    Mitglied
    Registriert seit
    12.01.2005
    Beiträge
    30

    Problem mit Download Skript und IE7

    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?

  2. #2
    Registrierter Benutzer
    Registriert seit
    11.01.2006
    Beiträge
    103
    überprüfe mal die header-angaben oder probiers mal modrewrite

  3. #3
    Registrierter Benutzer
    Registriert seit
    13.02.2007
    Beiträge
    25
    Finde keinen Fehler in den headern

  4. #4
    Registrierter Benutzer
    Registriert seit
    13.02.2007
    Beiträge
    25
    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);

  5. #5
    Registrierter Benutzer
    Registriert seit
    13.02.2007
    Beiträge
    25
    Keiner ne weitere Idee?

  6. #6
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    Zitat Zitat von hydee Beitrag anzeigen
    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?

  7. #7
    Registrierter Benutzer
    Registriert seit
    13.02.2007
    Beiträge
    25
    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.

  8. #8
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    Zitat Zitat von hydee Beitrag anzeigen
    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?)

  9. #9
    Registrierter Benutzer
    Registriert seit
    13.02.2007
    Beiträge
    25
    Code:
    // 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.

  10. #10
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    ich gehe mal davon aus weil wegen header('Connection: close'); ein Brocken Header ankommt.
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  11. #11
    Registrierter Benutzer
    Registriert seit
    13.02.2007
    Beiträge
    25
    Nee, wenn ich das raus nehme, ändert sich ja auch nix.

  12. #12
    Registrierter Benutzer
    Registriert seit
    11.01.2006
    Beiträge
    103
    Code:
    if($file_size!=0)
    			header('Content-Length: '.$file_size);
    wird $file_size vorher irgendwo gesetzt?

  13. #13
    Registrierter Benutzer
    Registriert seit
    13.02.2007
    Beiträge
    25
    ja. wird gesetzt.

  14. #14
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    Zitat Zitat von hydee Beitrag anzeigen
    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.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •