ThinkPHP文件操作(补全目录操作)

全屏阅读
  • 基本信息
  • 作者:
  • 作者已发布:917篇文章
  • 发布时间:2023年03月17日 22:56:07
  • 所属分类:PHP+MySql, THINKPHP
  • 阅读次数:216次阅读
  • 标签:

 最新版本的tp3.2.2中的文件驱动类目前得功能有文件的读,写,追加写,加载文件,判断文件是否存在,文件删除,读取文件信息,小弟在这增加了些目录和文件,分享给大家,需要完善的地方还请大神们多多指教拉! 这里新增了获取目录下子目录及文件列表,移动指定文件,清空目录(不包括目录文件夹),删除目录。

  调用文件驱动 IndexController.class.php

<?php
namespace Home\Controller;
use Think\Controller;
use Think\Storage; //引用文件驱动
class IndexController extends Controller {
    public function index(){
        $file = new Storage;  //实例化文件驱动
        $file::connect(STORAGE_TYPE);
        $view =  MODULE_PATH."View";
        $list = $file::getList($view);
        foreach ($list as $k) {
            if(is_array($k))
            {
                foreach ($k as $key) {
                echo $key["name"]."<br>";
                }
            }
        }      
        $this->display();
    }
}

TP的默认文件驱动 Library\Think\Storage\Driver 在File.class.php这个文件类中追加目录操作方法:

/*
 * 获取目录下子目录及文件列表
 * @param string $dirUrl 要扫描的目录地址。
 * @return array
*/
public function getList($dirUrl){
    $dirUrl=rtrim($dirUrl,'/');
    if(!is_dir($dirUrl)){
        return false;
    }
    $fileList=array();
    $dirList=array();
    $objects=scandir($dirUrl);
    foreach($objects as $obj){
        if($obj=='.'||$obj=='..'){
            continue;
        }
        $fileUrl=$dirUrl.'/'.$obj;
        if(is_file($fileUrl)){
            $filesize=filesize($fileUrl);
            $fileupdate=fileatime($fileUrl);
            array_push($fileList,array('Name'=>$obj,'fullName'=>$fileUrl,'length'=>$filesize,'uploadTime'=>$fileupdate));
        }
        if(is_dir($fileUrl)){
            array_push($dirList,array('name'=>$obj,'fullName'=>$fileUrl));
        }
    }
    return array('dirNum'=>count($dirList),'fileNum'=>count($fileList),'dirs'=>$dirList,'files'=>$fileList);
}
 
/*
 * 移动指定文件
 * @param string $fileUrl 要移动的文件地址。
 * @param string $aimUrl 移动后的新地址。
 * @param boolen $overWrite 是否覆盖已存在的文件。
 * @return boolen
*/
public function moveFile($fileUrl, $aimUrl, $overWrite = true) {
    if (!is_file($fileUrl)) {
        return false;
    }
    if (is_file($aimUrl) && $overWrite == false) {
        return false;
    } elseif (is_file($aimUrl) && $overWrite == true) {
        $this->unlinkFile($aimUrl);
    }
    $aimDir = dirname($aimUrl);
    $this->createDir($aimDir);
    rename($fileUrl, $aimUrl);
    return true;
}
/*
 * 清空目录
 * @param string $dirUrl 要清空的目录地址。
 * @return boolen
*/
public function clearDir($dirUrl){
    $dirUrl=rtrim($dirUrl,'/');
    if(!is_dir($dirUrl)){
        return false;
    }
    $infos=$this->getList($dirUrl);
    $result=true;
    foreach ($infos['files'] as $file){
        $result=$this->unlinkFile($file['fullName']);
    }
    foreach ($infos['dirs'] as $dir){
        $result=$this->unlinkDir($dir['fullName']);
    }
    return $result;
}
/*
 * 删除目录
 * @param string $dirUrl 要删除的目录地址。
 * @return boolen
*/
public function unlinkDir($dirUrl){
    $dirUrl=rtrim($dirUrl,'/');
    if(!is_dir($dirUrl)){
        return false;
    }
    $infos=$this->getList($dirUrl);
    foreach ($infos['files'] as $file){
        $this->unlinkFile($file['fullName']);
    }
    foreach ($infos['dirs'] as $dir){
        $this->unlinkDir($dir['fullName']);
    }
    return rmdir($dirUrl);
}

通过文件操作类可以仿cms文件操作哦,直接在线修改模板。

顶一下
(0)
100%
订阅 回复
踩一下
(0)
100%
» 郑重声明:本文由mpxq168发布,所有内容仅代表个人观点。版权归恒富网mpxq168共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。

目前有 0 条留言 其中:访客:0 条, 博主:0 条

给我留言

您必须 [ 登录 ] 才能发表留言!