从文件夹和子文件夹中删除文件

时间:2017-03-04 18:25:15

标签: php

我有一个php脚本,可以将照片上传到主文件夹并将其复制到子文件夹中。我还有一个删除照片的PHP脚本。问题是它只删除主文件夹而不是子文件夹中的照片。这是我试图提出的代码,但没有任何反应。有什么想法吗?

$deletefile = $galleriesfolder.$folder.$dir.$image; 
    $deletefile1 = $galleriesfolder.$folder.$dir."/thumbs/".$image; 
    unlink($deletefile); 
    if (!is_file($deletefile)):
        die("no file");
    endif;
    unlink($deletefile1); 
    if (!is_file($deletefile1)):
        die("no file");

    endif;

2 个答案:

答案 0 :(得分:0)

以递归方式删除目录中的所有子文件夹和文件

/**
 * Deletes a directory and all files and folders under it
 * @return Null
 * @param $dir String Directory Path
 */
function rmdir_files($dir) {
 $dh = opendir($dir);
 if ($dh) {
  while($file = readdir($dh)) {
   if (!in_array($file, array('.', '..'))) {
    if (is_file($dir.$file)) {
     unlink($dir.$file);
    }
    else if (is_dir($dir.$file)) {
     rmdir_files($dir.$file);
    }
   }
  }
  rmdir($dir);
 }
}

这是一个非常讨厌的功能 你想小心处理它。确保您没有删除任何您不想删除的目录。它将尝试删除整个目录及其中的所有文件 除了确保成功打开目录句柄以进行阅读之外,它不会进行任何错误检查。

答案 1 :(得分:0)

此代码将以递归方式删除目录中的所有子文件夹和文件。

$dir = "/";
$di = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
$ri = new RecursiveIteratorIterator($di, `enter code here`RecursiveIteratorIterator::CHILD_FIRST);
foreach ($ri as $file)
{
         $file->isDir() ? rmdir($file) : unlink($file);
}