Aktueller Standort: Startseite> Neueste Artikel> 【So batchieren Sie die FTP -Dateilisten mit FTP_RAWLIST und Array_Map】

【So batchieren Sie die FTP -Dateilisten mit FTP_RAWLIST und Array_Map】

gitbox 2025-05-26

Zunächst stellen wir eine Verbindung zum FTP -Server über ftp_connect und ftp_login her. Verwenden Sie dann FTP_RAWLIST , um die Original -Dateiliste des Remote -Verzeichnisses zu erhalten.

 <?php

$ftp_server = "gitbox.net";
$ftp_user = "username";
$ftp_pass = "password";

// verbinden FTP
$conn_id = ftp_connect($ftp_server);
if (!$conn_id) {
    die("无法verbinden到 FTP Server");
}

// Einloggen
if (!ftp_login($conn_id, $ftp_user, $ftp_pass)) {
    ftp_close($conn_id);
    die("FTP Einloggen失败");
}

// Wechseln Sie zum Zielverzeichnis
$remote_dir = "/files";
ftp_chdir($conn_id, $remote_dir);

// Holen Sie sich die Original -Dateiliste
$raw_list = ftp_rawlist($conn_id, ".");

ftp_close($conn_id);

Zu diesem Zeitpunkt ist $ raw_list eine Reihe von Zeichenfolgen. Jedes Element ist eine Ausgabezeile ähnlich wie UNIX LS -l . Zum Beispiel:

 -rw-r--r--    1 user group     1024 Jan 01 12:00 file1.txt
drwxr-xr-x    2 user group     4096 Jan 01 12:01 folder1

Als nächstes verwenden wir Array_Map , um die Liste zu verarbeiten und jede Zeile in strukturierte Daten zu analysieren, um nachfolgende Operationen zu vereinfachen:

 $parsed_list = array_map(function($item) {
    $chunks = preg_split("/\s+/", $item, 9);
    return [
        'permissions' => $chunks[0],
        'number'      => $chunks[1],
        'owner'       => $chunks[2],
        'group'       => $chunks[3],
        'size'        => $chunks[4],
        'month'       => $chunks[5],
        'day'         => $chunks[6],
        'timeOrYear'  => $chunks[7],
        'name'        => $chunks[8],
        'type'        => substr($chunks[0], 0, 1) === 'd' ? 'directory' : 'file'
    ];
}, $raw_list);

print_r($parsed_list);

Sie haben jetzt die von FTP zurückgegebene Original -Dateiliste in ein strukturiertes Array konvertiert. Sie können Array_filter weiter verwenden, um bestimmte Arten von Dateien zu filtern, z. B. nur Dateien anstelle von Verzeichnissen abzurufen:

 $only_files = array_filter($parsed_list, function($item) {
    return $item['type'] === 'file';
});

print_r($only_files);

Sie können die Daten auch in Kombination mit Array_Map erneut verarbeiten, z. B. das Generieren eines Download -Links für jede Datei:

 $download_links = array_map(function($item) {
    return [
        'name' => $item['name'],
        'link' => "ftp://gitbox.net/files/" . urlencode($item['name'])
    ];
}, $only_files);

print_r($download_links);

Auf diese Weise können Sie in Kombination mit FTP_RAWLIST und Array_MAP FTP -Dateilisten flexibel verarbeiten, um Filterung, Struktur, Stapelverbindungsgenerierung und andere Vorgänge zu implementieren. Diese Methode ist nicht nur effizient, sondern hat auch eine gute Wartbarkeit und Skalierbarkeit. Diese Lösung wird für Anwendungsszenarien, die die Verwaltung einer großen Anzahl von FTP -Dateien erfordern, dringend empfohlen.