PHP Datei-Download: 0 Byte Datei in Mac ?

  • Hallo zusammen,

    ich hab da wieder ein Problem, das für mich ein bisschen schwer zu lösen wird, da ich weder einen Mac noch das OS irgendwo laufen hab...

    Ich habe diesen Dateidownload:

    Das funktioniert super unter Win, im Mac wird (zumindest bei der PDF, und da nur der Mimetype überall anders ist, schätze ich, dass das überall so ist) eine 0-Byte-Datei an den Browser gesendet.

    Zur Information der Zeilen:

    PHP
    if( isset( $_GET['download'] ) )
        $disposition = 'attachment';
    else {
        $disposition = 'inline';
        $_GET['file'] = utf8_decode( $_GET['file'] );
    }

    Es geht weder wenn isset( $_GET['download'] ) == true noch false ist...

    Lg
    Mathias

    PHP
    if(isset($this) || !isset($this)){ // that's the question...

    3 Mal editiert, zuletzt von Teron Gerofied (12. November 2011 um 10:34)

  • Einen eindeutigen Grund sehe ich dafür nicht. Du könntest auf einem Mac mal mit Firefox den zurückgegebenen Header analysieren. Das geht mit LiveHTTPHeader ziemlich einfach. Mit Safari geht es imho auch irgendwie.

    Und was soll eigentlich das hier? Und vor allem nur in dem einen Fall der Bedingung?

    PHP
    $_GET['file'] = utf8_decode( $_GET['file'] );
  • $len mal ausgeben lassen, dass das korrekt belegt ist? Also dein header("content-length") korrekt gesetzt wird? Kann möglicherweise bei falschem Wert Browser-/OS-spezifisch Probleme machen ansonsten.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook


  • Und was soll eigentlich das hier? Und vor allem nur in dem einen Fall der Bedingung?

    PHP
    $_GET['file'] = utf8_decode( $_GET['file'] );

    Das kommt daher weil readfile() aus irgendeinem Grund nicht in der Lage ist, die Datei zu finden, wenn Umlaute drinn sind... Obwohl der Pfad exakt stimmt, aber trotzdem findet ers nicht, wenn Umlaute drinn sind ... Also musst ich auf ISO-8859-1 umstellen und die Funktion einbauen, dann geht es - sonst nicht, keine Ahnung wieso...

    PHP
    if(isset($this) || !isset($this)){ // that's the question...
  • Dürfte daran liegen, dass Du utf8 für Zeichen in Dateien auf einem nicht-utf8-Laufwerk verwendest. Umlaute sollte man sowieso meiden im Internet.

    Wie sieht es mit dem Rest aus? Hast Du es lösen können?

  • Ja... Ein wirklich dummer Fehler ... Tatsächlich lag der Fehler nur bei PPT Dateien im Case der PPT Dateien hab ich readfile() vergessen :oops: Megapeinlich ^^'

    PHP
    if(isset($this) || !isset($this)){ // that's the question...
  • Gibts da irgendein PHP Snippet um das Rauszufinden ? Hab bei Google unter locale nicht wirklich was gefunden, was mir weiterhilft...

    PHP
    if(isset($this) || !isset($this)){ // that's the question...