TP5删除文件unline用法

例子

一   .因为客户的服务器内存比较小,为了方便后期的有利管理,需要及时的删除不需要的图片及文件

下面介绍方法,采用的是ThinkPHP5.0框架

1. 先来看下我的结构目录:

可以看到我所有的文件都保存在public/uploads下边的以日期命名的文件夹中,

这里采用了tp5的file类,有兴趣的可以去研究下,这里我用到了  unlink(),以及rmdir()的方法来删除文件夹

和文件夹下边的文件,

由于,tp5有限制,要求删除的文件夹下边必须不能有文件,所以如果直接删除文件夹的话,会提示你没有权限

这里需要循环一下文件夹下的文件,分别删除文件,然后再删除文件夹,好了,废话不多讲,下边上说明:

二:在你的控制器其中写入下面这个方法,不需要做任何改动,这个方法的作用是循环删除文件夹下的文件

扫描二维码关注公众号,回复: 2510086 查看本文章

借用了网上其他网友的改进方法,如下所示:

public function delDirAndFile($path, $delDir = FALSE) {
    if (is_array($path)) {
        foreach ($path as $subPath)
            delDirAndFile($subPath, $delDir);
    }
    if (is_dir($path)) {
        $handle = opendir($path);
        if ($handle) {
            while (false !== ( $item = readdir($handle) )) {
                if ($item != "." && $item != "..")
                    is_dir("$path/$item") ? delDirAndFile("$path/$item", $delDir) : unlink("$path/$item");
            }
            closedir($handle);
            if ($delDir)
                return rmdir($path);
        }
    } else {
        if (file_exists($path)) {
            return unlink($path);
        } else {
            return FALSE;
        }
    }
    clearstatcache();
}

然后,我们就可以来调用这个方法来进行删除操作了,如下所示:

//删除全部文件的方法
public function delSave(){
    $path=request()->param('path');
    $this->delDirAndFile(ROOT_PATH . 'public' . DS . 'uploads'.DS.$path);
    rmdir(ROOT_PATH . 'public' . DS . 'uploads'.DS.$path);
    return $this->success('删除成功','del');
}

这里$path指的是,你需要删除的文件夹名,例如20180715,

如果,你要删除uploads/20180715/1.jpg,那么只需要把$path的值赋值为20180715即可。

三:如果你只需要制定删除特别的文件,那就更容易了,只需要用以下的方法即可:

//删除单个文件方法
public function test(){
    $filename = ROOT_PATH . 'public' . DS . 'uploads/20180628/1.jpg';
    if(file_exists($filename)){
        unlink($filename);
    }else{
        return '我已经被删除了哦!';
    }
}

自己用法

 public function del()
   {
   	  $id=input('id');
        $select=Db::name('picture_fun')->field('img_path')->where('id','=',$id)->select();
        $select_path=array();
        foreach ($select as $key => $value) 
        {
          $select_path[]=$value['img_path'];

        }
      
        $path=$select_path[0];

         $filename = ROOT_PATH . 'public' .DS. 'static'.DS.'admin'.DS.$path;

          if(file_exists($filename))
          {
              $a=unlink(ROOT_PATH . 'public' .DS. 'static'.DS.'admin'.DS.$path);
              if($a)
              {
                 $dulnum=Db::name('picture_fun')->where('id','=',$id)->delete();
                  if(!empty($dulnum))
                {
                      $this->success('删除成功!',url('Picture/index'));
                }
               else
                   {
                       $this->error('删除失败!',url('Picture/index'));
                   }
              }

          }else
          {
                  $dulnum=Db::name('picture_fun')->where('id','=',$id)->delete();
                   if(!empty($dulnum))
                   {
                        $this->success('删除成功数据库成功,文件不存在!',url('Picture/index'));
                   }   
                   else{
                          $this->error('删除数据成功,但该文件不存在!',url('Picture/index'));
                   } 
          }

         
       
        
      
   }

猜你喜欢

转载自blog.csdn.net/heyuqing32/article/details/81303509