PHP ile klasörü nasıl kaldırılır?

2 Cevap php

Ben bir kategori oluşturduğunuzda ben orada görüntüleri yükleyebilirsiniz böylece ben, bir görüntü klasörü oluşturabilirsiniz.

Şimdi ben kategoriyi sildiğinizde bu klasörü silmek istiyorum.

Bir klasör oluşturmak için kod aşağıdaki ve iyi çalışıyor.

function create(){
if ($this->input->post('name')){
    $this->MCats->addCategory();
    $folder = $this->input->post('name');
    $folder = strtolower($folder);
    $folder = str_replace(" ", "_", $folder);
    $folder = 'images/'.$folder;
    $this->_create_path($folder);
...
...
}


function _create_path($folder)
{
    // create dir if not exists
    $folder = explode( "/" , $folder );
    $mkfolder = "";
    //sets the complete directory path
    for(  $i=0 ; isset( $folder[$i] ) ; $i++ )
    {
        $mkfolder .= $folder[$i] . '/';
        if(!is_dir($mkfolder )) mkdir("$mkfolder");
    }
}

Ve ben aşağıdaki kod ile geldi. Ama görüntüler klasörü kaldırmak değil böylece rmdir kullanmak nasıl emin değilim. Ben görüntüleri klasörün tek çocuğu kaldırmak istiyorum.

function delete($id){

$cat = $this->MCats->getCategory($id);
    // This will pull the name of category name.
$catname = $cat['name'];
$catname = strtolower($catname);
$catname = str_replace(" ", "_", $catname);
$catname = 'images/'.$catname;
    $this->_remove_path($catname);
...
...
}
function _remove_path($folder)
{

}

Bundan sonra devam etmek nasıl emin değilim.

Herkes bana bazı öneriler verebilir misin lütfen?

2 Cevap

$this->_remove_path($catname); // because previous parts you're using $catname

Sonra kaldır yolu işlevi

// recursively remove all files and sub-folder in that particular folder
function _remove_path($folder){
    $files = glob( $folder . DIRECTORY_SEPARATOR . '*');
    foreach( $files as $file ){
        if($file == '.' || $file == '..'){continue;}
        if(is_dir($file)){
            $this->_remove_path( $file );
        }else{
            unlink( $file );
        }
    }
    rmdir( $folder ); 
}

Sen unlink kullanılan gerekir ve rmdir olacak:

$handler = opendir($folder);
if (!$handler) {
    trigger_error('File Error: Failed to open the directory ' . $folder, E_USER_ERROR);
    return false;
}

// list the files in the directory
while ($file = readdir($handler)) {
    // if $file isn't this directory or its parent,
    if ($file != '.' && $file != '..' && !is_dir($file)) {
        // delete it
        if (!unlink($file)) {
            trigger_error('File Error: Failed to remove file ' . $file, E_USER_ERROR);
        }
    }
}

// tidy up: close the handler
closedir($handler);

if (!rmdir($folder)) {
    trigger_error('File Error: Failed to remove folder ' . $folder, E_USER_ERROR);
}