Problem beim Backup der Alben Problem beim Backup der Alben
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

Problem beim Backup der Alben

Started by Cookiie, May 30, 2013, 05:38:52 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Cookiie

Hi,

ich habe immer wieder mal das Problem, dass ich auf dem Server Dateien haben die sich nur in der Groß/Kleinschreibung der Dateiendung unterscheiden.
Zb. Image001.JPG und Image001.jpg
Für den Hoster (Linux/Apache - System) ist das kein Problem, wenn ich das aber auf meiner Windowsmaschine sichere, habe ich doppelte Files, die sich gegenseitig ausschließen.

Um das zumindest in Zukunft zu vermeiden, hätte ich gerne eine Möglichkeit, die die Endung immer in Kleinbuchstaben beim Upload umwandelt. Die Originalbilder kommen hier meistens von einer Digicam und werden meistens nicht umbenannt.

Bei den bisherigen Dopplungen sollte es ja reichen, die Bilder umzubenennen und die Einträge in der DB entsprechend anzupassen, oder muss ich hier mehr beachten?

Gruß Cookiie

Αndré

Quote from: Cookiie on May 30, 2013, 05:38:52 PM
Bei den bisherigen Dopplungen sollte es ja reichen, die Bilder umzubenennen und die Einträge in der DB entsprechend anzupassen, oder muss ich hier mehr beachten?
Das geht auch einfacher, indem du den in der Zwischengrößenansicht auf "Datei bearbeiten" klickst. Dort kannst du die Datei auch umbenennen.


Quote from: Cookiie on May 30, 2013, 05:38:52 PM
die Endung immer in Kleinbuchstaben beim Upload umwandelt
Den Mod erstelle ich nicht vor morgen.

Cookiie

Quote from: Αndré on May 30, 2013, 07:37:05 PM
Das geht auch einfacher, indem du den in der Zwischengrößenansicht auf "Datei bearbeiten" klickst. Dort kannst du die Datei auch umbenennen.
Gute Idee :-). Da wird dann das schwierigste das richtige Album zu finden :-)

Quote from: Αndré on May 30, 2013, 07:37:05 PM
Den Mod erstelle ich nicht vor morgen.
Bloss kein Stress, wir haben alle ein Leben :-). Die Anpassung wäre in meinen Augen durchaus auch was für die nächste Version. Es schadet nix und für einige andere macht das sicher auch Sinn.

Gruß Cookiie

Cookiie

Hallo André,

hattest du hier eigentlich noch was gemacht?
Weil ich hätte da durchaus noch Interesse dran.

Gruß Cookiie

Αndré

Öffne die Datei upload.php, finde
$picture_name = $matches[1] . '.' . $matches[2];
und füge darüber
$matches[2] = strtolower($matches[2]);
ein.

Dasselbe machst du in db_input.php.

Cookiie

#5
Hi,

funktioniert wunderbar. Ich hab den Code allerdings noch etwas erweitert und aus
   
$picture_name = $matches[1] . '.' . $matches[2];
while (file_exists($dest_dir . $picture_name)) {
    $picture_name = $matches[1] . '~' . $nr++ . '.' . $matches[2];
    }


folgendes gemacht.
   
$matches[2] = strtolower($matches[2]);
$picture_name = $matches[1] . '.' . $matches[2];
while (file_exists($dest_dir . strtolower($picture_name))) {
    $picture_name = $matches[1] . '~' . $nr++ . '.' . $matches[2];
    }


So dass ich den Filename nicht ändere, das CamelCase ist ja mitunter gewollt. Aber der Vergleich auf den vollen Namen geht und ich so komplett unique bin.

Gruß Cookiie

Αndré

Wie genau unterscheidet sich dein Code von meinen Anweisungen?

Cookiie

Ups,

copy + paste Fehler. Im Originalvergleich fehlt das "strtolower"

while (file_exists($dest_dir . ($picture_name)))


bei meiner Version habe ich das noch hinzugefügt, so dass hier immer mit der kleingeschriebenen Version vergliechen wird.
Ggf. könntest du das in meinem obien Post korrigieren, das die Verwirrung beseitigt wird.

Gruß Cookiie


Αndré

Diese Änderung solltest du dringend rückgängig machen, oder zumindest anders implementieren, da du derzeit nicht nach der Datei prüfst, die du am Ende abspeichern willst.

Konsequenterweise müsstest du aber eigentlich den gesamten Dateinamen mit kleinen Buchstaben abspeichern, da du sonst das gleiche Problem wie vorher hast. Z.B. kannst du auf einem Linuxsystem problemlos
- Image001.jpg
und
- image001.jpg
im selben Ordner abspeichern, beim Backup auf ein Windowssystem kommt es dann wieder zu Konflikten.


Daher empfehle ich, über
$picture_name = $matches[1] . '.' . $matches[2];
zusätzlich noch
$matches[1] = strtolower($matches[1]);
einzufügen und den Rest des Codes zu belassen wie er ursprünglich war.


Quote from: Cookiie on December 19, 2013, 11:22:49 AM
Ggf. könntest du das in meinem obien Post korrigieren, das die Verwirrung beseitigt wird.
Erledigt.

Cookiie

Jetzt wo du es sagst seh ich's auch. File_exists prüft ja auf die genaue Schreibweise und nicht auf die kleingeschriebene Schreibweise. Da geht der Vergleich wenn ich eine Datei mit gleichem Namen hochlade natürlich schief und ich überschreibe die vorhergehende. Lösung ist dann in der Tat komplett alles klein zu machen.

Danke für die Wink mit dem Zaun :-)