ThinkPHP⽂件操作(补全⽬录操作)
  最新版本的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);
thinkphp3}
$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⽂件操作哦,直接在线修改模板。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。