ThinkPHP读取本地文件信息(包括中文路径)

1.获取文件信息的控制器方法

<?php
namespace Home\Controller;
use Think\Controller;
class ReadFileController extends Controller{
    /**
     * 获取所有文件
     */
    public function get_allfiles($path,&$files) {  
        if(is_dir($path)){  
            $dp = dir($path);

            while ($file = $dp->read()){  
                if($file !="." && $file !=".."){  
                    $this->get_allfiles($path."/".$file, $files); 
                }  
            }  
            $dp ->close();  
        }  
        if(is_file($path)){  
            $files[] = $path;  
        }  
    }  

    /**
     * 获取所有文件的文件名称
     */  
    public function get_filenamesbydir($dir){  
        $files = array();
        $this->get_allfiles($dir,$files);
        return $files;  
    }
}
?>

2.其他控制器调用方法

<?php
namespace Home\Controller;
use Think\Controller;
class DownloadController extends CommonController {
    /**
     * 获取上传的文件 并且将数据保存到数据库
     */
    public function fileUploadToSave(){

        $file = new \Admin\Controller\ReadFileController();

        $filenames = $file->get_filenamesbydir("./Software");  

        //打印所有文件名,包括路径  
        foreach ($filenames as $value) {
            //中文路径的识别
            $value = iconv("gbk","utf-8",$value); 
            $handle = fopen($value,"r");
            //获取文件的统计信息
            $fstat = fstat($handle);

            echo "更新问的文件信息如下:"."</br>"."</br>";
            echo "文件路径:".$value."</br>";
            echo "文件名:".$this->get_basename($value)."<br>";
            echo "文件大小:".round($fstat["size"]/(1024*1024),2)."Mb<br>";
            echo "最后访问时间:".date("Y-m-d h:i:s",$fstat["atime"])."<br>";
            echo "最后修改时间:".date("Y-m-d h:i:s",$fstat["mtime"])."<br>"."<br>";
            }
            fclose();  
        }
    }
    /**
     * 获取文件名称
     */
    public function get_basename($filename){  
        return preg_replace('/^.+[\\\\\\/]/', '', $filename);  
    }

ThinkPHP项目地址

https://github.com/hirCodd/thinkPHP-Web-Application

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值