65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | |||
|  | namespace app\service; | |||
|  | 
 | |||
|  | use think\file\UploadedFile; | |||
|  | 
 | |||
|  | class File | |||
|  | { | |||
|  |     //上传文件移动到上传文件夹
 | |||
|  |     public static function move(UploadedFile $file) | |||
|  |     { | |||
|  |         $upload_path = 'storage/uploads/' . date('Ymd'); | |||
|  |         $path = app()->getRootPath() . $upload_path; | |||
|  |         $filename = uniqid() . '.' . $file->extension(); | |||
|  |         $upload_filename = '/' . $upload_path . '/' . $filename; | |||
|  |         return [$file->move($path, $filename), $file, $upload_filename]; | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * 文件访问路径转换为完整的url | |||
|  |      * @param string|null $fileUrl | |||
|  |      * @param bool $ossAnalysis 是否进行OSS解析 | |||
|  |      * @return string | |||
|  |      * @todo 若启用OOS存储,需根据业务配置调整$fileDomain | |||
|  |      * | |||
|  |      */ | |||
|  |     public static function convertCompleteFileUrl(?string $fileUrl, bool $ossAnalysis=true): string | |||
|  |     { | |||
|  |         if (empty($fileUrl)) { | |||
|  |             return ''; | |||
|  |         } | |||
|  |         if ($ossAnalysis) { | |||
|  |             $fileDomain = self::getFileDomain(); | |||
|  |         } else { | |||
|  |             $fileDomain = request()->domain(); | |||
|  |         } | |||
|  |         $prefix = substr($fileUrl, 0, 4); | |||
|  |         if (!($prefix == 'http')) { | |||
|  |             $fileUrl    = $fileDomain.'/'.ltrim($fileUrl, '/'); | |||
|  |         } | |||
|  | 
 | |||
|  |         return $fileUrl; | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * 文件访问域名前缀 | |||
|  |      * | |||
|  |      * @return string | |||
|  |      */ | |||
|  |     public static function getFileDomain(): string | |||
|  |     { | |||
|  |         $confBase   = ExtraConfig::base(); | |||
|  |         $confOss    = ExtraConfig::aliOss(); | |||
|  |         $isOss      = $confBase['oss'] ?? 'false'; | |||
|  |         $ossDomain  = $confOss['customDomain'] ?? ''; | |||
|  | 
 | |||
|  |         // 默认为当前域名
 | |||
|  |         $fileDomain = request()->domain(); | |||
|  |         if ($isOss == 'true' && !empty($ossDomain)) { | |||
|  |             $fileDomain = $ossDomain; | |||
|  |         } | |||
|  | 
 | |||
|  |         $fileDomain = trim($fileDomain); | |||
|  |         return rtrim($fileDomain, '/'); | |||
|  |     } | |||
|  | } |