php个人开发 文件管理,PHP、thinkPHP5.0开发网站文件管理功能(一)显示文件

显示文件用到的函数有

1、urlencode($str):编码URL字符串,便于将字符串编码并将其用于URL的请求部分

2、urldecode($str):解码已经编码的URL字符串,返回解码后的字符串

3、iconv('GB2312','UTF-8',$str):将字符串$str,编码由GB2312转变为utf-8;解决中文乱码

4、file_exists($path):检查文件或目录是否存在,$path规定要检查的路径

5、stripos($str,$find,$start):查找$find,在字符串中第一次出现的位置,没找到返回false

6、chdir(directory):directory规定新的当前目录

7、getcwd():获取当前目录

8、opendir($path):打开文件,$path要打开的目录路径

9、readdir(dir_handle):函数返回目录中下一个文件的文件名(如:文件夹中的文件名),dir_handle,可选,指定之前有opendir()打开的目录句柄资源

10、filesize($filename):返回指定文件的大小

11、filectime($filename):返回指定文件的创建时间

12、filemtime($filename):返回指定文件的最后修改时间

13、array_column($arr,$column_key):$column_key,需要返回的列,可以是索引数组的整数索引,或者是关联数组的列的字符串键值,也可以是null;PHP版本要5.5+

14、array_multisort($arr,sorting order,sorting type):函数返回排序数组,sorting order规定排列顺序(SORT_ASC升序【A-Z】,SORT_DESC降序【Z-A】)

15、is_dir():检查指定的文件是否是目录

public function index($currdir=null){

//解决中文文件乱码

$currdir = urldecode($currdir);

$currdir = iconv('UTF-8','GB2312',$currdir);

if($currdir){

//判断目录是否存在

if(file_exists($currdir)){

//查看权限,最大权限是项目根目录

if(stripos($currdir,ROOT_PATH) === 0 && stripos($currdir,ROOT_PATH,'..') === false){

chdir($currdir);//$currdir 规定新的当前目录(打开目录,如:查看子目录、上级目录)

}

}

}

$rootdir = getcwd();//获取当前路径

$dir = opendir($rootdir);//打开文件

$data = [];

$num['dir'] = 0;

$num['file'] = 0;

//循环读取文件

while($filename = readdir($dir)){

if($filename !='.' && $filename !='..'){//显示目录到页面不要上级目录‘..’和当前目录‘.’

if(is_dir($filename)){

$arr['icon'] = '#icon-mulu';//输出目录图标

$arr['flag'] = 1;//标记是否是目录

$num['dir']++;//记录目录的数量

}else{

$arr['icon'] = '#icon-wenjian';//输出文件图标

$arr['flag'] = 1;//判断是否是文件

$num['file'] ++;//记录文件的数量

}

$arr['currdir'] = iconv('GB2312','UTF-8',getcwd().'\\'.$filename);

$arr['name'] = $filename;//文件名

$arr['size'] = filesize($filename);//文件大小

$arr['ctime'] = filectime($filename);//文件创建时间

$arr['mtime'] = filemtime($filename);//文件最后修改时间

$data[] = $arr;

}

}

//对文件和文件夹分类排序

array_multisort(array_column($data,'flag'),SORT_DESC,$data);

$this->assign('dirs',$data);

return view();

}

/**

* 文件大小转换(B、KB、MB、TB)显示

*/

function size_format($size = 0, $num = 0)

{

$unit = ['B', 'KB', 'MB', 'TB'];

$i = 0;

while ($size > 1024) {

$size /= 1024;//$size = $size/1024

$i++;

}

return round($size, $num) . $unit[$i];//round()保留小数点

}

HTML模板

{volist name="dirs" id="v"}

{$v.name|iconv='GB2312','UTF-8',###}

{$v.flag?"文件夹":size_format($v.size,1)}{$p|getpics=###,40}{$v.ctime|date="Y-m-d",###}{$v.mtime|date="Y-m-d",###}

删除 |

{eq name="v.flag" value="0"}

编辑 |

{/eq}

重命名

{eq name="v.flag" value="0"}

|下载

{/eq}

{/volist}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值