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

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


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.其他控制器调用方法


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

ThinkPHP项目地址

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

你可能感兴趣的:(------PHP)