2021-11-18 09:57:04 +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
|
|
|
|
|
*
|
|
|
|
|
*/
|
2021-11-24 08:19:54 +00:00
|
|
|
|
public static function convertCompleteFileUrl(?string $fileUrl, bool $ossAnalysis=false): string
|
2021-11-18 09:57:04 +00:00
|
|
|
|
{
|
|
|
|
|
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, '/');
|
|
|
|
|
}
|
|
|
|
|
}
|