首页  >  问答  >  正文

PHP:如何将子文件夹中的所有图像复制到单个文件夹中(无需创建子文件夹!)

为了我妻子的生日聚会,我建立了一个网站,通过该网站我收集聚会客人的图像,然后制作一本好书作为纪念品。客人有一个帐户,并将图像上传到“他们的”文件夹。我现在有一个工具可以从图片动态创建幻灯片 - 但不幸的是它无法遍历子文件夹。 因此,我的主要目标是将图像文件复制到一个指定的文件夹,幻灯片可以从该文件夹中获取它。然后,我会每 5 分钟左右运行一次 PHP 脚本作为 cron,并在聚会期间在屏幕上显示图像。

我已经找到了一堆代码片段,它们都做同样的事情: 它们将所有文件和文件夹递归复制到定义的目的地。 例如。这个(取自这里: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/");
?>

这工作得很好,但事实是它不是我所需要的。该脚本正在复制文件和文件夹,并将这些文件放入它们所在的相同子文件夹中。我的问题是我不想创建子文件夹。我只想让脚本遍历所有子文件夹并将找到的图像文件复制到一个文件夹中。 我认为这对于新手来说应该是一件容易的事情,但似乎我错了。

任何人都可以帮助我实现这一目标吗?谢谢!

P粉877114798P粉877114798238 天前319

全部回复(1)我来回复

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

    回复
    0
  • 取消回复