Wie erstellt MediaWiki die Bildpfade?

8

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?

    
Jerry Pank 29.10.2008, 17:26
quelle

4 Antworten

2

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%     
JDrago 29.10.2008, 19:23
quelle
12

Die angenommene Antwort ist falsch:

  • Die MD5-Summe einer Zeichenfolge ist 32 Hexadezimalzeichen (128 Bit), nicht 16
  • Der Dateipfad berechnet sich aus der MD5-Summe des Dateinamens, nicht aus dem Inhalt der Datei selbst
  • Das erste Verzeichnis im Pfad ist das erste Zeichen, und das zweite Verzeichnis ist das erste und das zweite Zeichen. Der Verzeichnispfad ist keine Kombination der ersten 3 oder 6 Zeichen.

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.

    
nohat 31.10.2008 21:11
quelle
4

In PHP können Sie die folgende Funktion aufrufen, um die URL zu erhalten. Sie können sich den PHP-Code anschauen, um herauszufinden, wie er den Pfad berechnet.

%Vor%     
gradbot 31.10.2008 21:28
quelle
0

Ich habe ein kleines Bash-Skript namens reorder.sh erstellt, das Dateien von "images" in die spezifischen Unterordner verschiebt:

%Vor%     
Nicolas Christener 07.03.2016 20:09
quelle

Tags und Links