PHP: Bagaimana untuk menyalin semua imej dalam subfolder ke dalam satu folder (tidak perlu membuat subfolder!)
P粉877114798
P粉877114798 2024-01-29 09:16:15
0
1
315

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粉877114798
P粉877114798

membalas semua(1)
P粉083785014

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/");
?>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!