我可以在创建类别时创建图像文件夹,以便我可以在那里上传图像。
现在我想在删除类别时删除该文件夹。
创建文件夹的代码如下,效果很好。
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");
}
}
我想出了以下代码。但我不知道如何使用rmdir,以便它不会删除图像文件夹。我想只删除图像文件夹的子项。
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)
{
}
我不确定如何继续。
有人可以给我一些建议吗?
答案 0 :(得分:2)
$this->_remove_path($catname); // because previous parts you're using $catname
然后删除路径功能
// 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 );
}
答案 1 :(得分:1)
$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);
}
答案 2 :(得分:0)
我修改后的 Darryl Hein Code版本对我来说就像一个魅力。
function remove_path2($path) {
if(is_dir($path)) {
$handler = opendir($path);
if (!$handler) {
trigger_error('File Error: Failed to open the directory ' . $path, E_USER_ERROR);
return;
}
// list the files in the directory
while ($file = readdir($handler)) {
if ($file != '.' && $file != '..')
remove_path2($path.DIRECTORY_SEPARATOR.$file);
}
// tidy up: close the handler
closedir($handler);
if (!rmdir($path)) {
trigger_error('File Error: Failed to remove folder ' . $path, E_USER_ERROR);
}
}
else {
// delete it
if (!unlink($path)) {
trigger_error('File Error: Failed to remove file ' . $path, E_USER_ERROR);
}
}
}