Rumah  >  Soal Jawab  >  teks badan

PHP: Bagaimana untuk menyalin semua imej dalam subfolder ke dalam satu folder (tidak perlu membuat subfolder!)

Untuk majlis hari jadi isteri saya, saya menyediakan laman web di mana saya mengumpul imej tetamu parti dan kemudian membuat buku yang bagus sebagai kenang-kenangan. Tetamu mempunyai akaun dan memuat naik imej ke folder "mereka". Saya kini mempunyai alat yang secara dinamik mencipta tayangan slaid daripada gambar - tetapi malangnya ia tidak dapat merentasi subfolder. Jadi matlamat utama saya adalah untuk menyalin fail imej ke folder tertentu yang mana tayangan slaid boleh membawanya. Saya kemudian akan menjalankan skrip PHP sebagai cron setiap 5 minit atau lebih dan memaparkan imej pada skrin untuk tempoh pesta.

Saya telah menemui sekumpulan coretan kod yang semuanya melakukan perkara yang sama: Mereka menyalin semua fail dan folder secara rekursif ke destinasi yang ditentukan. Sebagai contoh. Yang ini (diambil dari sini: 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/");
?>

Ini berfungsi dengan baik, tetapi sebenarnya ia bukan yang saya perlukan. Skrip sedang menyalin fail dan folder dan meletakkan fail ke dalam subfolder yang sama di dalamnya. Masalah saya ialah saya tidak mahu mencipta subfolder. Saya hanya mahu skrip melalui semua subfolder dan menyalin fail imej yang ditemui ke dalam folder. Saya fikir ini sepatutnya menjadi perkara yang mudah untuk pemula, tetapi nampaknya saya salah.

Bolehkah sesiapa membantu saya mencapai ini? Terima kasih!

P粉877114798P粉877114798238 hari yang lalu318

membalas semua(1)saya akan balas

  • P粉083785014

    P粉0837850142024-01-30 00:50:02

    IT Goldman betul - biarkan $to keluar daripada persamaan; malah saya mengalih keluar pembolehubah $to sepenuhnya dan meletakkan laluan saya dalam parameter salinan:

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

    balas
    0
  • Batalbalas