building-sign/app/service/File.php

65 lines
1.8 KiB
PHP
Raw Normal View History

2023-01-09 08:41:41 +00:00
<?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, '/');
}
}