Heim > Fragen und Antworten > Hauptteil
Für die Geburtstagsfeier meiner Frau habe ich eine Website eingerichtet, auf der ich Bilder von Partygästen gesammelt und anschließend ein schönes Buch als Andenken gestaltet habe. Gäste haben ein Konto und laden Bilder in „ihren“ Ordner hoch. Ich habe jetzt ein Tool, das dynamisch Diashows aus Bildern erstellt – aber leider kann es keine Unterordner durchqueren. Mein Hauptziel besteht also darin, die Bilddatei in einen bestimmten Ordner zu kopieren, aus dem die Diashow sie übernehmen kann. Ich würde dann etwa alle 5 Minuten ein PHP-Skript als Cron ausführen und das Bild für die Dauer der Party auf dem Bildschirm anzeigen.
Ich habe eine Reihe von Codefragmenten gefunden, die alle das Gleiche tun: Sie kopieren alle Dateien und Ordner rekursiv an das definierte Ziel. Zum Beispiel. Dieses hier (von hier: https://code-boxx.com/copy-folder-php/):
<?php // (A) COPY ENTIRE FOLDER function copyfolder ($from, $to, $ext="*") { // (A1) SOURCE FOLDER CHECK if (!is_dir($from)) { exit("$from does not exist"); } // (A2) CREATE DESTINATION FOLDER if (!is_dir($to)) { if (!mkdir($to)) { exit("Failed to create $to"); }; echo "$to created\r\n"; } // (A3) GET ALL FILES + FOLDERS IN SOURCE $all = glob("$from$ext", GLOB_MARK); print_r($all); // (A4) COPY FILES + RECURSIVE INTERNAL FOLDERS if (count($all)>0) { foreach ($all as $a) { $ff = basename($a); // CURRENT FILE/FOLDER if (is_dir($a)) { copyfolder("$from$ff/", "$to$ff/"); } else { if (!copy($a, "$to$ff")) { exit("Error copying $a to $to$ff"); } echo "$a copied to $to$ff\r\n"; } }} } // (B) GO! copyfolder("C:/SOURCE/", "C:/TARGET/"); ?>
Das funktioniert gut, aber die Wahrheit ist, dass es nicht das ist, was ich brauche. Das Skript kopiert Dateien und Ordner und platziert die Dateien im selben Unterordner, in dem sie sich befinden. Mein Problem ist, dass ich keine Unterordner erstellen möchte. Ich möchte nur, dass das Skript alle Unterordner durchgeht und die gefundenen Bilddateien in einen Ordner kopiert. Ich dachte, das sollte für Neulinge eine einfache Sache sein, aber anscheinend habe ich mich geirrt.
Kann mir jemand helfen, dies zu erreichen? Danke!
P粉0837850142024-01-30 00:50:02
IT 高盛是对的 - 将 $to 排除在外;我什至完全删除了 $to 变量并将我的路径放在复制参数中:
0) { foreach ($all as $a) { $ff = basename($a); // CURRENT FILE/FOLDER if (is_dir($a)) { copyfolder("$from$ff/"); } else { if (!copy($a, "C:/TARGET/$ff")) { exit("Error copying $a to C:/TARGET/$ff"); } echo "$a copied to C:/TARGET/$ff\r\n"; } }} } // (B) GO! copyfolder("C:/SOURCE/"); ?>