4images Forum & Community

4images Issues / Ausgaben => Discussion & Troubleshooting => Topic started by: bash-t on August 26, 2009, 10:19:29 AM

Title: Problem der Bilddarstellung bei Sonderzeichen in Dateinamen
Post by: bash-t on August 26, 2009, 10:19:29 AM
Hallo zusammen.

Ich weiß, dieses Thema wurde zwar schon des Öfteren hier im Forum angesprochen, aber ich habe noch keine zufriedenstellende Lösung gefunden. Ausserdem meine ich, dass die bisher beschriebenen Probleme mit Sonderzeichen eher die reine Anzeige der Beschreibung, Bildtitel etc. zum Thema hatten, welches Nicky mit der jeweiligen Encodierung der Datenbank erklärt hat.

Ich habe allerdings folgendes Problem: Wenn ein Bild im Dateinamen bereits ein Sonderzeichen enthält (also bspw. Täßt Image.jpg (absichtlich keine korrekte deutsche Rechtschreibung ;) )), so wird die Datei im ACP bei "Check new Images" bereits falsch encodiert dargestellt.
Hier ein kleiner Screenshot, der dies erklärt:
(http://img38.imageshack.us/img38/4214/20090826091139.png)

Ein Klick auf den Link zum Bild an dieser Stelle führt logischerweise auch nicht zum Ziel.
Wenn das Bild in der DB gespeichert wird, sieht das Ergebnis folgendermaßen aus:

(http://img39.imageshack.us/img39/3421/20090826091544.png)

Titel, Beschreibung, Tags sehen alle gut aus, nur der Dateiname ist falsch encodiert.


Um dem auf den Grund zu gehen, habe ich mir im ACP das Checkimage Formular in der Detailsicht einmal angesehen:

http://img262.imageshack.us/img262/4442/20090826093135.jpg (http://img262.imageshack.us/img262/4442/20090826093135.jpg)(wegen der Lesbarkeit des Threads als Hyperlink eingefügt)

Daraufhin habe ich mir die checkimages.php genauer angesehen.
(Hinweis: ich habe die bereits modifizierte Version 2.6.2 aus folgendem Thread verwendet http://www.4homepages.de/forum/index.php?topic=19926.0 (http://www.4homepages.de/forum/index.php?topic=19926.0))

Daraufhin habe ich folgende Modifikationen vorgenommen:
Finde:
 $file_type = get_file_extension($image_list[$key][$i-1]);
      $auto_iptc_now = ($imageinfo = @getimagesize(MEDIA_PATH.$cat_path."/".$image_list[$key][$i-1], $info) && $auto_iptc) ? 1 : 0;
    $image_name = get_file_name($image_list[$key][$i-1]);
Ersetze durch:
$file_type = get_file_extension(utf8_decode($image_list[$key][$i-1]));
      $auto_iptc_now = ($imageinfo = @getimagesize(MEDIA_PATH.$cat_path."/".utf8_decode($image_list[$key][$i-1]), $info) && $auto_iptc) ? 1 : 0;
    $image_name = utf8_decode(get_file_name($image_list[$key][$i-1]));

Finde:
show_table_separator("<input type=\"checkbox\" name=\"addimage_".$ii."\" value=\"1\"".$checked." /> ".$image_list[$key][$i-1], 2);
Ersetze durch:
show_table_separator("<input type=\"checkbox\" name=\"addimage_".$ii."\" value=\"1\"".$checked." /> ".utf8_decode($image_list[$key][$i-1]), 2);

Finde:
$file_src = MEDIA_PATH.$cat_path."/".$image_list[$key][$i-1];
Ersetze durch:
$file_src = MEDIA_PATH.$cat_path."/".utf8_decode($image_list[$key][$i-1]);

Finde:
show_hidden_input("image_media_file_".$ii, $image_list[$key][$i-1]);
Ersetze durch:
show_hidden_input("image_media_file_".$ii, utf8_decode($image_list[$key][$i-1]));

Finde:
$link = "<a href=\"".MEDIA_PATH.$cat_path."/".$image_list[$key][$i-1]."\" target=\"_blank\">".$image_list[$key][$i-1]."</a>";
      show_hidden_input("image_media_file_".$ii, $image_list[$key][$i-1]);

Ersetze durch:
$link = "<a href=\"".MEDIA_PATH.$cat_path."/".utf8_decode($image_list[$key][$i-1])."\" target=\"_blank\">".utf8_decode($image_list[$key][$i-1])."</a>";
      show_hidden_input("image_media_file_".$ii, utf8_decode($image_list[$key][$i-1]));


Hinweis: Ein Version der checkimage.php jeweils vor und nach dieser Modifikation habe ich als Datei angehangen.

Nach den Änderungen sieht das Ergebnis auf der ACP Seite so aus:
http://img507.imageshack.us/img507/7880/20090826094954.jpg (http://img507.imageshack.us/img507/7880/20090826094954.jpg)(wegen der Lesbarkeit des Threads als Hyperlink eingefügt)

Bis auf die ITPC Informationen, die seltsamerweise bei dem Bild mit Sonderzeichen (und nur bei diesem) fehlen, sieht das Ergebnis eigentlich recht gut aus!

Der Datenbankeintrag stellt mich auch soweit zufrieden:
(http://img132.imageshack.us/img132/4415/neu1p.jpg)

Allerdings erscheint beim Aufruf der Testseite: http://www.pawlikonline.de/temp/4images/details.php?image_id=36 eine 404er Fehlermeldung, obwohl ein Aufruf im Browser auf das Bild direkt (http://www.pawlikonline.de/temp/4images/data/media/3/Täßt Image_01.jpg (http://www.pawlikonline.de/temp/4images/data/media/3/Täßt Image_01.jpg)) funktioniert.

Nun befinde ich mich aber langsam in einer Sackgasse

Es müsste nachgeforscht werden, weswegen
a) die ITPC Informationen nicht aus den Metainformationen des Bildes gezogen werden. (Hängt vermutlich mit meinen Änderungen an der checkimages zusammen, aber ich sehe den Fehler nicht).

b) Wieso wird das Bild nicht angezeigt, trotz korrekter Speicherung des Dateinamens in der Datenbank. Ich vermute noch ein paar notwendige Anpassungen an der functions.php. Dort die Methoden get_file_path und get_media_code. Jeweils die ersten Parameter erhalten den Dateinamen, der evtl. wieder encodiert werden müsste. Allerdings bin ich dort noch auf keinen grünen Zweig gekommen.

Wenn sich jemand an der Stelle besser auskennt und wüsste was zu ändern ist - ich wäre überaus dankbar! :)

Viele Grüße und meinen Dank an diejenigen, die sich die Mühe gemacht haben diesen Post komplett durchzulesen :)

Bash-T
Title: Re: Problem der Bilddarstellung bei Sonderzeichen in Dateinamen
Post by: rinaldos on August 26, 2009, 11:15:42 AM
Das Bild wird zwar nun in der Datenbank korrekt eingetragen, aber das Problem sind nun die Sonderzeichen die ggf Dein System wieder in andere Zeichen umsetzt und schon stimmt der Dateiname nicht mehr ......
4images ist nicht für UTF8 in Dateinamen und anderen Dingen ausgelegt. Da würde vielleicht eine Funktion die Sonderzeichen aus dem Dateinamen rausnimmt mehr Sinn machen.

Title: Re: Problem der Bilddarstellung bei Sonderzeichen in Dateinamen
Post by: tom69 on August 27, 2009, 08:23:23 AM
Halloo,

tjaaa, das Problem mit den Sonderzeichen habe ich auch....die Lösung , ist jetzt nicht gerade dolle, aber statt : ä, ö usw.   schreibe ich einfach ae, oe usw.

Gruß
Tom
Title: Re: Problem der Bilddarstellung bei Sonderzeichen in Dateinamen
Post by: mawenzi on August 27, 2009, 09:39:00 AM
@ tom69
... 100% ...

@ bash-t
... mit den Regeln zur Dateienbezeichnung aus alten Windows-/Dos-Zeiten fährt man heute immer noch problemlos ...
... das beseitigt zwar noch nicht dein bestehendes Problem, lässt es aber auch garnicht erst aufkommen ... ;)
Title: Re: Problem der Bilddarstellung bei Sonderzeichen in Dateinamen
Post by: Nicky on August 28, 2009, 10:36:31 PM
ahoi,

wie detlef schon erwähnt hat.. "garnicht erst aufkommen" :)
meine persönliche meinung ist genauso wie seine.
sehr oft würde ich gerne ein "/" in meinen files benutzen.. nur das geht überhaupt nicht und das ist gut so ;)
umlaute in den dateinamen zu benutzen: weg damit  :mrgreen:

okay, verstehe du hast dir die mühe gemacht.
V@no hat mal in seinen MODs so ein check zugefügt..
wenn sonderzeichen in dem dateinamen vorhanden ist, wird es per checkimages mit "normalen buchstaben" automatisch ersetzt. = praktisch ohne sich den kopf zu zerbrechen mit den umlauten :)