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=false): 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, '/');
 | ||
|     }
 | ||
| } |