Aktueller Standort: Startseite> Neueste Artikel> Wie verwendete ich die MD5_File () -Funktion von PHP in Kombination mit Scandir (), um die Stapelerzeugung von Dateifingerabdrücken zu erreichen?

Wie verwendete ich die MD5_File () -Funktion von PHP in Kombination mit Scandir (), um die Stapelerzeugung von Dateifingerabdrücken zu erreichen?

M66 2025-06-15

In der tatsächlichen Entwicklung ist Dateifingerabdruck (Datei -Hash -Wert) eine übliche Anforderung, die zur Überprüfung der Dateiintegrität, zur Verhindern von Manipulationen oder zur Implementierung von Dateideduplizierung und anderen Funktionen verwendet wird. PHP bietet eine leistungsstarke integrierte Funktion md5_file () , mit der der MD5-Hash-Wert einer Datei problemlos erhalten werden kann. In Kombination mit der Funktion Scandir () kann die Erzeugung aller Dateien in einem bestimmten Verzeichnis leicht erreicht werden.

In diesem Artikel wird detailliert vorgestellt, wie Sie MD5_File () und Scandir () verwenden, um die Batch -Erzeugung von Dateifingerabdrücken zu erreichen und vollständigen Beispielcode zu geben.


1. Funktion Einführung

  • md5_file (String $ Dateiname): String | False

    Berechnet den MD5-Hash-Wert der angegebenen Datei, gibt eine 32-Bit-Zeichenfolge zurück und gibt False zurück, wenn das Lesen fehlschlägt.

  • scandir (String $ -Verzeichnung, int $ sorting_order = scandir_sort_ascending): Array | Falsch

    Ruft alle Dateien und Unterverzeichnisse in das angegebene Verzeichnis und gibt ein Array mit Dateinamen zurück.


2. Implementierungsideen

  1. Verwenden Sie Scandir (), um alle Dateien und Ordneramen im Zielverzeichnis zu erhalten.

  2. Filtern Sie spezielle Verzeichnisse heraus . und ... in Verzeichnisartikeln.

  3. Idieren Sie alle Dateien durch und verwenden Sie MD5_file () , um den MD5 -Fingerabdruck zu erhalten.

  4. Speichert den Dateinamen und den entsprechenden MD5 -Wert für das Array oder die Ausgabe.


3. Beispielcode

 <?php
$directory = '/path/to/your/files'; // Ersetzen Sie es durch den Verzeichnispfad, den Sie scannen möchten

// Scannen Sie das Verzeichnis
$files = scandir($directory);

if ($files === false) {
    die('Verzeichnislesung ist fehlgeschlagen');
}

$fileHashes = [];

foreach ($files as $file) {
    // Filtern '.' Und '..'
    if ($file === '.' || $file === '..') {
        continue;
    }

    $filePath = $directory . DIRECTORY_SEPARATOR . $file;

    // Nur Dateien verarbeiten,Ignorieren Sie Unterverzeichnisse
    if (is_file($filePath)) {
        $hash = md5_file($filePath);
        if ($hash !== false) {
            $fileHashes[$file] = $hash;
        } else {
            $fileHashes[$file] = 'Read fehlgeschlagen';
        }
    }
}

// Ausgangsergebnis
foreach ($fileHashes as $filename => $md5) {
    echo "Dateiname:{$filename},MD5 Fingerabdruck:{$md5}" . PHP_EOL;
}
?>

4.. Dinge zu beachten

  • Der Verzeichnispfad muss als der tatsächliche Pfad auf dem Server geschrieben werden, um sicherzustellen, dass das PHP -Skript die Erlaubnis hat, das Verzeichnis zu lesen.

  • Dieser Beispielcode verarbeitet nur die erste Datendateienschicht im angegebenen Verzeichnis und wird nicht zu Unterverzeichnissen wiederholt. Wenn eine Rekursion erforderlich ist, kann sie in Verbindung mit rekursiven Funktionen oder einem rekursiven DirectoryToryToryIterator implementiert werden.

  • md5_file () eignet sich für die schnelle Fingerabdruckgenerierung kleiner Dateien. Es wird empfohlen, Brocken zu verwenden, um Hash -Werte zu berechnen, um Speicherüberläufe zu vermeiden.


5. Expansion: Verarbeitung von Remotedateien in Kombination mit URLs

Manchmal müssen wir Fingerabdrücke auf Remotedateien generieren. Obwohl MD5_File () Remote -Datei -URLs unterstützt, kann dies fehlschlagen, wenn der Remote -Server den Zugriff einschränkt. Es wird empfohlen, die Datei vor der Berechnung in das lokale temporäre Verzeichnis herunterzuladen.

Beispiel (schematisch):