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