Heim  >  Fragen und Antworten  >  Hauptteil

PHP: So kopieren Sie alle Bilder in einem Unterordner in einen einzigen Ordner (keine Notwendigkeit, Unterordner zu erstellen!)

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粉877114798P粉877114798238 Tage vor317

Antworte allen(1)Ich werde antworten

  • P粉083785014

    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/");
    ?>

    Antwort
    0
  • StornierenAntwort