building-sign/app/service/File.php

65 lines
1.8 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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