S.Goertz: Upload: Dateityp überprüfen: JPEG

Hallo,

ich habe eine Uploadfunktion eingerichtet, welche nur JPEG-dateien akzeptieren soll. also *.jpg und *.jpeg
bei einem versuch fand ich heraus, dass der vom browser übermittelte dateityp "images/pjpeg" ist. obwohl mich dieses p von pjpeg verwunderte übernahm ich es und es klappt auch recht gut. dennoch kommt es bei einigen leuten zu problemen.

meine frage jetzt: welche typen muss ich akzeptieren, damit alle *.jpg und *.jpeg hochgeladen werden? es ist ja dank "elseif" kein problem, auf mehrere typen zu überprüfen.

Gruß,
  S.Goertz

  1. Hallo S.Goertz,

    bei einem versuch fand ich heraus, dass der
    vom browser übermittelte dateityp
    "images/pjpeg" ist.

    Also, 'images' glaube ich nicht. Eher 'image'.
    Und 'pjpeg' *kann* es sein. Es gibt 'image/jpeg'
    und 'image/pjpeg', AFAIK -- einmal fuer JPeg und
    einmal fuer Progressive JPeg.

    meine frage jetzt: welche typen muss ich
    akzeptieren, damit alle *.jpg und *.jpeg
    hochgeladen werden? es ist ja dank "elseif"
    kein problem, auf mehrere typen zu überprüfen.

    image/jpeg und image/pjpeg, AFAIR.

    Gruesse,
     CK

    1. Hio,

      Also, 'images' glaube ich nicht. Eher 'image'.
      Und 'pjpeg' *kann* es sein. Es gibt 'image/jpeg'
      und 'image/pjpeg', AFAIK -- einmal fuer JPeg und
      einmal fuer Progressive JPeg.

      Der IE gibt hierbei immer image/pjpeg an, auch wenn es kein Progressive JPEG ist.

      Ein elsif brauchte nicht unbedingt, mit
      if (preg_match('!image/p?jpeg!', $IMAGE_TYPE)) {
        ..
        }
      kommste ohne aus.

      gl & hf

      Thorsten

  2. Moin!

    meine frage jetzt: welche typen muss ich akzeptieren, damit alle *.jpg und *.jpeg hochgeladen werden? es ist ja dank "elseif" kein problem, auf mehrere typen zu überprüfen.

    Mache das besser nicht an den Mimetypen fest. Die Browser machen den Mimetyp nämlich mit Sicherheit auch nicht am Datei_inhalt_ fest, sondern an der Dateiendung (wenn sie denn überhaupt einen ordentlichen Typ senden). Es hat schon Intelligenzbolzen gegeben, die irgendein Bildformat meinten "wandeln" zu müssen, indem sie die Endung ausgetauscht haben. So wird aus einem ".bmp" eben ein ".jpg".

    Eine bessere Methode ist, mit getimagesize() die hochgeladenen Bilddaten zu prüfen. Die Funktion gibt zurück, welchen Bildtyp sie gefunden hat. JPG ist einer davon. Wenn die Funktion kein JPG findet, weise den Upload zurück.

    - Sven Rautenberg

    --
    "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)
    1. Hallo,

      Dass die Browser da teilweise nicht immer das richtige ausgeben ist mir bekannt, allerdings habe ich grundsätzlich nichts dagegen, wenn leute bmp-dateien mit jpg-endung hochladen. dann beschweren sie sich hinterher nicht, dass es nicht angenommen wird, obwohl sie "konvertiert" haben. sämtliche uploads müssen erst freigeschaltet werden, deshalb stellt das kein problem dar.

      Danke und ein frohes Fest!

      Gruß,
        S.Goertz