Problem mit .JPG und .jpg

  • Ich nutze dieses Script zum upload und verändern von Bildern.
    In "meinen" Seiten rufe ich an vielen verschiedenen Stellen die Bilder auf, jeweils variabel mit einer id - aber immer und fast überall so:


    PHP
    1. if(file_exists("photo/".$dogid."/".$dogid.".jpg"))
    2. $img = "photo/".$dogid."/".$dogid.".jpg";
    3. else
    4. $img = "platzhalter.png";


    Jetzt gibt es aber viele User, die JPG hochladen, und somit werden die Bilder mit dem "großen" JPG nicht angezeigt (ebenso in einer Bildergalerie). Das verbieten von großen JPG scheitert daran, das zu viele User nicht umwandeln können.
    Möglichkeit a wäre, immer und grundsätzlich die Bilder mit einer lowercase extension abzuspeichern - aber wie?
    Möglichkeit b wäre in dem jeweiligen Script zu sagen, mach aus allen zu holenden großen JPG kleine - dto -wie?

  • In UploadHandler.php findest du Funktion:


    PHP
    1. protected function handle_file_upload


    Dort müsstest du mal die Variablen checken und entsprechend ein strtolower einbauen.

  • Danke für die Antwort.
    Habe bereits gefühlte tausendmal strtolower($type) eingesetzt, immer ohne Erfolg (weil für mich so als Frauenverständnis type die Endung wäre)
    Ein einfaches

    PHP
    1. $file->name = $this->get_file_name(strtolower($name), strtolower($type), $index, $content_range);


    in besagter Funktion (also ein strtolower($name)) - setzt mir zwar den ganzen Dateinamen klein aber es funktioniert dann ;-)
    Aber mit Deinem Hinweis hatte ich schonmal die richtige Funktion wo ich ansetzen musste.

  • simple methode: elseif(file_exists(... .JPG)


    damit hast du aber zB noch nicht .jpeg und .JPEG abgefangen
    oder png oder gif etc


    du könntest in der datenbank die endung direkt mitspeichern, damit wärst du wohl am flexiebelsten, was die dateiendungen angeht.

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • simple methode: elseif(file_exists(... .JPG)


    damit hast du aber zB noch nicht .jpeg und .JPEG abgefangen
    oder png oder gif etc


    du könntest in der datenbank die endung direkt mitspeichern, damit wärst du wohl am flexiebelsten, was die dateiendungen angeht.


    Das ist beides nicht zu empfehlen. Bei ersterem verheizt man völlig sinnfrei Resourcen für zig file_exists()-Prüfungen (jpg, Jpg, jPg, jpG, JPg, JpG, jPG, JPG -> 8 Prüfungen und noch nichtmal jpeg, png, gif abgedeckt).
    Letzteres ist nicht ganz so schlimm, aber trotzdem unnötig.


    Beim Hochladen der Bilder die Dateiendung vor dem Speichern mit strtolower behandeln ist in diesem Fall schon am sinnvollsten.

    "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

  • ich nutze keine Datenbank für die Bilder.
    Die Dateiendungen grundsätzlich klein zu schreiben reicht schon. Erlaubt sind sowieso nur Bilder, ob jpeg, jpg, gif oder png. Ich denke das das reichen sollte (sind Bilder von Hunden). Auf alle Blödheiten beim abspeichern kann man nicht eingehen ;-)
    Die einzigste file_exists Prüfung nehme ich für das "Hauptbild" des Hundes vor (welches den Namen seiner ID haben muss) - wenn nicht vorhanden lasse ich ein Ersatzbild anzeigen - damit immer der gleiche Platz belegt wird.