【问题标题】:PHP copy all images folder from one folder to anotherPHP将所有图像文件夹从一个文件夹复制到另一个文件夹
【发布时间】:2014-09-17 12:06:13
【问题描述】:

我正在编写一些代码,它将获取一个文件夹中的所有图像并将它们复制到另一个文件夹中,然后删除原始文件夹及其内容。

我有:

copy('images/old-folder/*', 'images/new-folder/');
unlink('images/old-folder/');

但这不起作用:(但它不起作用我的意思是文件不会复制并且旧文件夹不会被删除:(

我什至尝试过:

system('cp images/old-folder/* images/new-folder/');

这也不起作用:(请帮忙。

我什至尝试过更改这两个文件夹的权限:

chmod('images/old-folder/', 0777);
chmod('images/new-folder/', 0777);

【问题讨论】:

  • 你试过完全合格的路径吗?帐号有权限吗?
  • copy() 不应该在目录上工作,而应该只在单个文件上工作,如文档中所述。请参阅this answer 以获得纯 PHP 解决方案。如果可以的话,请不要使用必须非常小心的 shell 调用。

标签: php linux


【解决方案1】:
foreach(glob('images/old-folder/*') as $image) {
    copy($image, 'images/new-folder/' . basename($image)); unlink($image);
}
rmdir('images/old-folder');

查看文档:globrmdir,您还可能会发现 rmdir 上的用户 cmets 很有用。

编辑:

basepath 添加到复制函数的第二个参数中,该参数必须是实际路径而不是目录。

【讨论】:

  • 这有点用,它会删除图像和文件夹,但不会将图像复制到新文件夹中
  • 我将尝试更改图像的权限,然后再将其复制到 foreach 中
  • 看我的回复,我对上面的代码做了一些修改。
【解决方案2】:
<?php

$src = 'pictures';
$dst = 'dest';
$files = glob("pictures/*.*");
      foreach($files as $file){
      $file_to_go = str_replace($src,$dst,$file);
      copy($file, $file_to_go);
      }

?>

在这里找到:PHP copy all files in a directory to another?

【讨论】:

    【解决方案3】:

    这是来自@Prasanth 的修改版本,应该可以工作(未经测试)

    <?php
        $oldfolder = 'images/new-folder';
        $newfolder = 'images/old-folder';
    
        $files = glob($oldfolder . '/*');
    
        foreach($files as $file){
            $filename = basename($file);
            copy($file,  $oldfolder . '/' . $filename);
            unlink($file);
        }
        rmdir($oldfolder);
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 2018-03-18
      • 1970-01-01
      相关资源
      最近更新 更多