JPG per _FILES[...]['type'] als octet-stream erkannt

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • JPG per _FILES[...]['type'] als octet-stream erkannt

    moin,

    ich frage per
    Code:
          switch ($_FILES[...]['type']){
            case "image/pjpeg":
            case "image/jpeg": $jpg = true; break;
            case "image/x-png":
            case "image/png": $png = true; break;
            default: $fehler = $_FILES[...]['type';
    ab, ob es sich beim Upload um eine JPG-Datei handelt,
    bei manchen (!) JPG-Dateien wird mir jedoch der MIME-Typ
    application/octet-stream zurückgemeldet.

    Ein Blick in den Hexcode der jeweiligen JPG zeigt mir (kryptisch)
    dass es sich tatsächlich um anders aufgebaute JPG-Dateien handelt.

    Sie enthalten im Dateikopf das Kürzel HPI statt JFIF (???)
    was die Homepage von XnView als Hemera Photo Image mit der
    standardmäßigen erweiterung .hpi ausweist.

    IrfanView zeigt sie korrekt an und meldet keinen falschen Dateiheader,
    was es sonst tut, wenn es sich z.B. um eine tatsächliche bmp handelte mit falscher Endung.

    Laut uni Köln http://www.uni-koeln.de/rrzk/www/mime/Mimetypes.htm
    müsste es sich bei der Endung (!) .hpi um den MIME-Typ
    application/vnd.hp-hpid handeln

    Opera, Netscape u. IE sind nicht in der Lage, sie anzuzeigen, egal ob mit jpg o. hpi-endung.
    Mit hpi-Endung nennt sie Irfanview allerdings auf Anfrage in *.jpg um.


    Was hat es damit auf sich und wie kann ich diesen "JPG-Typ" ebenfalls als
    image/jpeg bzw. image/pjpeg erfassen?
    Zuletzt geändert von inkognitus; 02.12.2004, 03:19.

  • #2
    Wie wär´s mit getimagesize!?!
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      @ Titus

      das ist gut:

      PHP-Code:
      array ( => 141=> 160=> 2=> 'width="141" height="160"''bits' => 8'channels' => 3'mime' => 'image/jpeg', ) 
      Der Schlüssel 'mime' ist nicht mal dokumentiert, aber genau das, was ich brauche, denn Netscape bspw. liefert nicht die $_FILES[...]['type'] -Information, die verhindern würde, dass solch ein "HPI-JPG" als JPG hochgeladen würde, sie müsste lauten:
      application/octet-stream
      oder
      application/vnd.hp-hpid

      Der IE machts zwar richtig und die Datei würde deshalb nicht als JPG angenommen, aber das scheint mit anderen Browsern nicht zuverlässig.

      getimagesize
      ist die serverseitige Lösung, die man so auch gut zur Ausgabe der richtigen Header-Infos für Bilder aus einer Datenbank nutzen kann.

      Einfach mal so:
      PHP-Code:
      include_once($_SERVER["DOCUMENT_ROOT"].'/cgi-bin/connect.php');
      $query = @mysql_query("SELECT bild FROM ".TABLE." WHERE id=".$_GET['id']);
      $blob = @mysql_fetch_assoc($query);
      $mime = @GetImageSize($blob['bild']);
      Header("Content-type: ".$mime['mime']);
      echo 
      $blob['bild'];
      @
      mysql_close($db); 

      Danke

      Kommentar


      • #4
        Ich dachte eher an Index 2, das funzt auch in älteren PHP-Versionen.
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          @ Titus

          richtig, hatte ich bisher auch verwendet (ich kannte 'mail' garnicht)

          habe mir aber auch gleich vorgemerkt vor Script-Upload die PHP-Info einzuholen.


          Danke für den Hinweis

          Kommentar

          Lädt...
          X