今天是:2025年8月9日 星期六
记住用户名密码
最新版本的tp3.2.2中的文件驱动类目前得功能有文件的读,写,追加写,加载文件,判断文件是否存在,文件删除,读取文件信息,小弟在这增加了些目录和文件,分享给大家,需要完善的地方还请大神们多多指教拉! 这里新增了获取目录下子目录及文件列表,移动指定文件,清空目录(不包括目录文件夹),删除目录。
调用文件驱动 IndexController.class.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?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这个文件类中追加目录操作方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | /* * 获取目录下子目录及文件列表 * @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 条留言 其中:访客:0 条, 博主:0 条