Ergebnis 1 bis 11 von 11

Thema: Bilder mit GROSSER Dateiendung werden nicht angezeigt

  1. #1
    Contao-Nutzer
    Registriert seit
    29.11.2010.
    Beiträge
    27

    Standard Bilder mit GROSSER Dateiendung werden nicht angezeigt

    Hallo Community,

    ich bin am verzweifeln!
    Bei meiner letzten Contao-Installation (2.11.5) habe ich Probleme mit der Bilddarstellung.

    Wenn ich ein Bild in einen Artikel oder einen Nachrichtenbeitrag einfüge, wird es mit den eingestellten Parametern korrekt dargestellt. Die Bilder sollten beim Anklicken in einer Lightbox angezeigt werden. Aber in der Lightbox wird nix geladen. Ich kann die Bilder auch nicht direkt im Browser aufrufen. Dann erhalte ich einen "page not found error".

    Nach einigem Rumprobieren fand ich heraus, dass es an der Dateiendung liegt. Diese ist bei meinem Kunden immer in Grossbuchstaben (Kamerastandard). Wenn ich die Endung in Kleinbuchstaben ändere klappt es. Ich möchte meinem Kunden aber nicht zumuten die Bilder vorher umzubenennen, da der Kunde völlig technikresistent ist

    Das hängt ja vermutlich mit der Serverkonfig zusammen, aber wo muss ich ansetzen?!

    Bin für jeden Tipp dankbar.

    der Patrick

  2. #2
    Administratorin Avatar von lucina
    Registriert seit
    19.06.2009.
    Ort
    Kiel (DE)
    Beiträge
    7.335
    Partner-ID
    152
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Vielleicht bringt Dir das in der .htaccess Abhilfe:
    Code:
    <IfModule mod_speling.c>
      CheckCaseOnly On
      CheckSpelling On
    </IfModule>
    Funktioniert nur dann, wenn Dein Apache in aktueller Version mit mod_speling läuft, prüft bei jeder Anfrage, ob die Datei in der gewünschten Schreibweise vorliegt (in dem Fall wohl 'jpg'). Falls nicht, wird nach Alternativen mit enthaltenen Großbuchstaben gesucht (in diesem Fall wohl 'JPG') und diese dann ausgeliefert. Falls die nicht vorhanden sind, wird #404 geliefert.

  3. #3
    Administrator Avatar von xchs
    Registriert seit
    19.06.2009.
    Beiträge
    14.557
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Cool, "mod_speling" - nomen est omen oder wie?
    Contao Community Administrator

    [Unterstützungsmöglichkeiten]

  4. #4
    Administratorin Avatar von lucina
    Registriert seit
    19.06.2009.
    Ort
    Kiel (DE)
    Beiträge
    7.335
    Partner-ID
    152
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Auch andere haben Humor ... :-)

  5. #5
    Contao-Nutzer
    Registriert seit
    29.11.2010.
    Beiträge
    27

    Standard

    hmmm... die Idee hatte ich auch schon.
    Leider bleibt die Anweisung ohne Wirkung. mod_speling wird vom Provider offensichtlich nicht angeboten

    Gibt's vielleicht eine Lösung über mod_rewrite?

    Vielen Dank & Schönen Gruß

  6. #6
    Contao-Nutzer
    Registriert seit
    29.11.2010.
    Beiträge
    27

    Standard

    also,

    ich habe das ganze jetzt per Hook (postUpload) und der php-Funktion rename() gelöst.
    Nun werden alle Dateiendungen direkt nach dem Upload automatisch klein geschrieben und die Leerzeichen durch Unterstriche ersetzt.

    Das ist die beste Lösung.

    Mein erster Hook... Wow
    Contao ist einfach nur geil!

    Schönen Gruß an alle
    vom Patrick

  7. #7
    Community-Moderator Avatar von stefan-at-work
    Registriert seit
    05.06.2009.
    Ort
    Bad Segeberg
    Beiträge
    1.780
    Partner-ID
    634

    Standard

    Vielleicht postest Du auch noch Deine Lösung? Dann haben alle etwas davon!

  8. #8
    Contao-Nutzer
    Registriert seit
    29.11.2010.
    Beiträge
    27

    Standard

    achso, ja klar.

    Das problem ist nur, dass ich eigentlich kein PHP programmieren kann...
    ...aber probieren kann ich es ja.

    Wie man einen Hook einsetzt, erkläre ich aber nicht noch einmal, Ok?!

    Bei mir heißt der Hook imageRename, die Funktion heißt postUpload, also lautet die config.php bei mir:
    Code:
    $GLOBALS['TL_HOOKS']['postUpload'][] = array('imageRename', 'postUpload');
    Die imageRename.php sieht dann so aus:


    Code:
    class imageRename extends Backend
    	 {
    	   public function postUpload($arrFiles) 
    	      {
    	         for($i = 0; $i<count($arrFiles); ++$i)
    	            {
    		         $fileul = $arrFiles[$i];
    		         $path_parts = pathinfo($fileul);
    		         $oldfilename = $path_parts['filename'];
    		         $oldextension = $path_parts['extension'];
    		         $newfilename = strtolower($oldfilename);
    		         $newextension = strtolower($oldextension);
    		         $newfile = str_replace ($oldfilename, $newfilename, $fileul);
    		         $newfileextension = str_replace ($oldextension, $newextension, $newfile);
    		         $oldname = "../".$fileul;
    		         $newname = "../".strtr($newfileextension, " ", "_");
    		         rename ($oldname, $newname);
    	            }
    	      }
    	   }
    Also erstmal eine Schleife, falls es sich um mehrere Dateien im Upload handelt.
    Dann wird mit pathinfo() der Dateiname und die -erweiterung extrahiert.
    Mit strtolower() werden Dateiname und -erweiterung kleingemacht.
    Mit str_replace() wird der alte Name durch kleingeschriebenen Dateiname ersetzt.
    Dann mit strtr() werden die Leerzeichen durch Unterstriche ersetzt.
    Abschließend wird mit rename() die Datei im Filesystem umbenannt.

    Sicher nicht besonders schön, aber es funktioniert. Jetzt kann mein Kunde seine Bilder benennen wie er möchte. Nach dem Upload ist alles kleingeschrieben und hat keine Leerzeichen mehr.

  9. #9
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Da stimmt aber irgendetwas mit dem Server nicht. Das solltest du besser beheben. Wenn dort eine Datei mit ner groß geschriebenen Dateiendung liegt muss der Server die doch trotzdem anzeigen können!? Support fragen.

    ps Schau dir mal die Funktion standardize() aus system/functions.php an, damit erzeugt Contao die Aliase.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  10. #10
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Auch auf die Gefahr hin, dass ich dir nun den Spass verderbe:

    Code:
    class imageRename extends Backend
    {
    	public function postUpload($arrFiles) 
    	{
    		foreach($arrFiles as $strFile)
    		{
    			rename($strFile, dirname($strFile) . '/' . standardize(basename($strFile)));
    		}
    	}
    }
    Erledigt dasselbe, ist aber ggf. ybersichtlicher.

    Man kann das Spiel nun auch noch weiter treiben und die Contao interne Files Klasse verwenden, aber das yberlasse ich nun dem Leser.
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  11. #11
    Contao-Nutzer
    Registriert seit
    29.11.2010.
    Beiträge
    27

    Standard

    @Andreas: ne, das ist leider so bei diesem Provider. War vermutlich auch das letzte Projekt das ich dort hosten lasse. Aber das mit dem Umbenennen ist ne Sache, die ja nicht nur deswegen ein Thema ist.

    @xtra: Spaß verderben? Doch nicht mit konstruktiver Unterstützung. Ich war ja nur froh, dass ich als Nicht-Programmierer es so hinbekommen habe.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

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