Ich habe eine Perl-Anwendung, die MediaWiki-SQL-Tabellen analysiert und Daten von mehreren Wiki-Seiten anzeigt. Ich muss in der Lage sein, den absoluten Bildpfad neu zu erstellen, um die Bilder anzuzeigen, zB: .../f/fc/Herbs.jpg/300px-Herbs.jpg
Aus dem MediaWiki-Handbuch:
Image_Authorization: "Der [image] Pfad kann einfach aus dem Dateinamen und ..."
berechnet werden
Wie wird der Pfad berechnet?
Ein möglicher Weg wäre, die MD5-Signatur der Datei (oder die Datei-ID in einer Datenbank) zu berechnen und dann den Pfad darauf aufzubauen / zu finden.
Sagen wir zum Beispiel, wir bekommen eine MD5-Signatur wie "1ff8a7b5dc7a7d1f0ed65aaa29c04b1e"
Der Pfad könnte aussehen wie "/ 1f / f" oder "/ 1f / ff / 8a"
Der Grund ist, dass Sie nicht alle Dateien in einem Ordner haben möchten, und Sie die Möglichkeit haben sollen, sie auf verschiedene Server oder ein SAN oder was auch immer in einer gleichmäßig verteilten Weise zu "partitionieren" .
Die MD5-Signatur ist eine Zeichenfolge aus 16 "Hex" -Zeichen. Unser Beispiel von "/ 1f / ff / 8a" gibt uns 256 * 256 * 256 Ordner zum Speichern der Dateien. Das sollte für jeden ausreichen:)
Aktualisierung aufgrund der großen Nachfrage:
HINWEIS - Ich habe gerade festgestellt, dass wir speziell darüber sprechen, wie MediaWiki es macht. Dies ist nicht jetzt MediaWiki tut es, aber eine andere Möglichkeit, in der getan hätte .
Mit "MD5-Signatur" meine ich, so etwas zu tun (Codebeispiele in Perl):
%Vor%$ sig ist jetzt 32 alphanumerische Zeichen lang: "1ff8a7b5dc7a7d1f0ed65aaa29c04b1e"
Erstellen Sie dann eine Ordnerstruktur wie folgt:
%Vor%Ordnerstruktur sieht wie
aus %Vor%Die angenommene Antwort ist falsch:
Die MD5-Summe von "Herbs.jpg" ist fceaa5e7250d5036ad8cede5ce7d32d6. Die ersten 2 Zeichen sind 'fc' und geben den Dateipfad f / fc / an, was im Beispiel angegeben ist.
Ich habe ein kleines Bash-Skript namens reorder.sh erstellt, das Dateien von "images" in die spezifischen Unterordner verschiebt:
%Vor%