php顯示文件目錄及路徑,php獲取目錄下的文件名

直接上代碼,複製即用

    protected $paths=[];
    /**
     * @description: 獲取文件路徑
     * @param {type} 
     * @return: 
     */
    protected function getDir($path)
    {
        if (is_dir($path)) {
            $dir =  scandir($path);
            foreach ($dir as $value) {
                $sub_path = $path . '/' . $value;
                if ($value == '.' || $value == '..') {
                    continue;
                } else if (is_dir($sub_path)) {
                    $this->getDir($sub_path);
                } else {
                    $pathinfo=pathinfo($value);
                    if(in_array($pathinfo['extension'],['jpg','png','gif','bmp','raw','jpeg'])){   //只獲取符合後綴的文件
                        $str=str_replace('../public','',$path);   //因個人需要獲取相對路徑所以去掉,不需要可以去掉
                        array_push($this->paths, $str."/{$value}");
                    }
                }
            }
        }
    }
php獲取指定目錄中文件路徑數組

使用案例

情景:替換原有小程序圖片保存圖片路徑保存了小程序緩存圖片路徑,需要修正為正確伺服器相對路徑,數據量又很大,只能編寫腳本修複數據

    /**
     * @description:執行修復報名頭像路徑問題 
     * @param {type} 
     * @return: 
     */
    public function imgUpdate()
    {
        try{
            $this->paths = [];
            $this->getDir(request('path'));
            $paths=&$this->paths;
            $fileName=[];
            foreach($paths as $k =>$path){
                $pathinfo=pathinfo($path);
                $str=str_replace('.'.$pathinfo['extension'],'',$path);
                $fileName=explode('_',basename($str));
                if(count($fileName)==3){
                    $res=Registration::where(['idcard'=>$fileName[0],'name'=>$fileName[1],'subject_name'=>$fileName[2]])->update(['exam_avatar'=>$path]);
                }
            }
            return response([
                'code'=>200,
                'message'=>'操作成功'
            ]);
        }catch(Exception $e){
           return response([
               'code'=>422,
               'message'=>$e->getMessage()
           ],422);
        }

       
        // dd($fileName);
        return $this->success('');
    }
    /**
     * @description: 獲取文件路徑
     * @param {type} 
     * @return: 
     */
    protected function getDir($path)
    {
        if (is_dir($path)) {
            $dir =  scandir($path);
            foreach ($dir as $value) {
                $sub_path = $path . '/' . $value;
                if ($value == '.' || $value == '..') {
                    continue;
                } else if (is_dir($sub_path)) {
                    $this->getDir($sub_path);
                } else {
                    $pathinfo=pathinfo($value);
                    if(in_array($pathinfo['extension'],['jpg','png','gif','bmp','raw','jpeg'])){   //只獲取符合後綴的文件
                        $str=str_replace('../public','',$path);   //因個人需要獲取相對路徑所以去掉
                        array_push($this->paths, $str."/{$value}");
                    }
                }
            }
        }
    }

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/233372.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-11 13:31
下一篇 2024-12-11 13:31

相關推薦

發表回復

登錄後才能評論