直接上代码,复制即用
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}");
}
}
}
}
}