直接上代碼,複製即用
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}");
}
}
}
}
}

使用案例
情景:替換原有小程序圖片保存圖片路徑保存了小程序緩存圖片路徑,需要修正為正確伺服器相對路徑,數據量又很大,只能編寫腳本修複數據
/**
* @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