Codeigniter删除目录及其内容

时间:2013-12-19 09:00:15

标签: php codeigniter directory delete-file

我正在尝试使用codeigniter删除产品图片文件夹。

此外,我试图制作的删除功能还需要删除其所有内容,如此空或不,文件夹将被删除。我猜,它会使用递归类型的删除...我不太确定。

我已尝试删除以下功能:

function delete_directory($path)
{
    $path=base_url().'products/thumb/';
    $this->load->helper("file"); // load the helper
    delete_files($path, true); // delete all files/folders
     //rmdir($dirname);
     if(rmdir($path)){
        echo 'deleted';die;}
     else{
        echo 'not';die; }
     return true;

}

但它总是不返回

3 个答案:

答案 0 :(得分:1)

删除目录内容: 它可能会工作,我用过

$this->load->helper('directory');
$this->load->helper("file");

$dir_fiels = directory_map('resources/captcha/');
$len = sizeOf($dir_fiels);
for($i=0; $i<$len;$i++){
    unlink('resources/captcha/'.$dir_fiels[$i]);
}

答案 1 :(得分:0)

创建一个帮手。见下文: -

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

if ( ! function_exists('remove_directory'))
{
function remove_directory($directory, $empty=FALSE)
{
    if(substr($directory,-1) == '/') {
        $directory = substr($directory,0,-1);
    }

    if(!file_exists($directory) || !is_dir($directory)) {
        return FALSE;
    } elseif(!is_readable($directory)) {

    return FALSE;

    } else {

        $handle = opendir($directory);
        while (FALSE !== ($item = readdir($handle)))
        {
            if($item != '.' && $item != '..') {
                $path = $directory.'/'.$item;
                if(is_dir($path)) {
                    remove_directory($path);
                }else{
                    unlink($path);
                }
            }
        }
        closedir($handle);
        if($empty == FALSE)
        {
            if(!rmdir($directory))
            {
                return FALSE;
            }
        }
    return TRUE;
    }
}
}

然后在您的控制器中加载此帮助程序并调用函数 remove_directory()

/* End of file recursive_helper.php */
/* Location: /application/helpers/recursive_helper.php */ 

答案 2 :(得分:0)

删除所有文件:

  delete_files('./path/to/your/directory/');

包含子文件夹:

  delete_files('./path/to/your/directory/', TRUE);