mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-07-01 15:32:48 +08:00
重构默认本地上传组件;
This commit is contained in:
@@ -224,6 +224,13 @@ $ul_system_config = array(
|
||||
"remark" => "访问域名",
|
||||
"sort" => 0,
|
||||
),
|
||||
array(
|
||||
"name" => "txcos_domain",
|
||||
"group" => "upload",
|
||||
"value" => "填你的",
|
||||
"remark" => "访问域名",
|
||||
"sort" => 0,
|
||||
),
|
||||
array(
|
||||
"name" => "file",
|
||||
"group" => "site",
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<label class="layui-form-label required">存储方式</label>
|
||||
<div class="layui-input-block">
|
||||
{foreach ['local_public'=>'本地存储','alioss'=>'阿里云oss','qnoss'=>'七牛云oss','txcos'=>'腾讯云cos'] as $key=>$val}
|
||||
<input type="radio" name="upload_type" lay-filter="upload_type" value="{$key}" title="{$val}" {if $key==sysconfig('upload','upload_type')}checked=""{/if}>
|
||||
<input type="radio" name="upload_type" lay-filter="upload_type" value="{$key}" title="{$val}" {if $key==sysconfig('upload','upload_type')}checked="" {/if}>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
@@ -24,8 +24,14 @@
|
||||
<tip>设置允许上传大小。</tip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item show-type-item alioss" >
|
||||
<div class="layui-form-item show-type-item local_public">
|
||||
<label class="layui-form-label">站点域名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="local_domain" class="layui-input" placeholder="请输入站点域名" value="{:sysconfig('upload','local_domain')}">
|
||||
<tip>例子:{$Request.domain},如果不填写,那么自动获取当前站点域名,但是在命令行调用上传时不能正确生成地址。</tip>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item show-type-item alioss">
|
||||
<label class="layui-form-label required">公钥信息</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="alioss_access_key_id" class="layui-input" lay-verify="required" lay-reqtext="请输入公钥信息" placeholder="请输入公钥信息" value="{:sysconfig('upload','alioss_access_key_id')}">
|
||||
@@ -33,7 +39,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item show-type-item alioss" >
|
||||
<div class="layui-form-item show-type-item alioss">
|
||||
<label class="layui-form-label required">私钥信息</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="alioss_access_key_secret" class="layui-input" lay-verify="required" lay-reqtext="请输入私钥信息" placeholder="请输入私钥信息" value="{:sysconfig('upload','alioss_access_key_secret')}">
|
||||
@@ -41,7 +47,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item show-type-item alioss" >
|
||||
<div class="layui-form-item show-type-item alioss">
|
||||
<label class="layui-form-label required">数据中心</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="alioss_endpoint" class="layui-input" lay-verify="required" lay-reqtext="请输入数据中心" placeholder="请输入数据中心" value="{:sysconfig('upload','alioss_endpoint')}">
|
||||
@@ -49,7 +55,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item show-type-item alioss" >
|
||||
<div class="layui-form-item show-type-item alioss">
|
||||
<label class="layui-form-label required">空间名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="alioss_bucket" class="layui-input" lay-verify="required" lay-reqtext="请输入空间名称" placeholder="请输入空间名称" value="{:sysconfig('upload','alioss_bucket')}">
|
||||
@@ -57,7 +63,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item show-type-item alioss" >
|
||||
<div class="layui-form-item show-type-item alioss">
|
||||
<label class="layui-form-label required">访问域名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="alioss_domain" class="layui-input" lay-verify="required" lay-reqtext="请输入访问域名" placeholder="请输入访问域名" value="{:sysconfig('upload','alioss_domain')}">
|
||||
@@ -65,7 +71,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item show-type-item txcos" >
|
||||
<div class="layui-form-item show-type-item txcos">
|
||||
<label class="layui-form-label required">公钥信息</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="txcos_secret_id" class="layui-input" lay-verify="required" lay-reqtext="请输入公钥信息" placeholder="请输入公钥信息" value="{:sysconfig('upload','txcos_secret_id')}">
|
||||
@@ -73,7 +79,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item show-type-item txcos" >
|
||||
<div class="layui-form-item show-type-item txcos">
|
||||
<label class="layui-form-label required">私钥信息</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="txcos_secret_key" class="layui-input" lay-verify="required" lay-reqtext="请输入私钥信息" placeholder="请输入私钥信息" value="{:sysconfig('upload','txcos_secret_key')}">
|
||||
@@ -81,7 +87,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item show-type-item txcos" >
|
||||
<div class="layui-form-item show-type-item txcos">
|
||||
<label class="layui-form-label required">存储桶地域</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="txcos_region" class="layui-input" lay-verify="required" lay-reqtext="请输入存储桶地域" placeholder="请输入存储桶地域" value="{:sysconfig('upload','txcos_region')}">
|
||||
@@ -89,14 +95,14 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item show-type-item txcos" >
|
||||
<div class="layui-form-item show-type-item txcos">
|
||||
<label class="layui-form-label required">存储桶名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="txcos_bucket" class="layui-input" lay-verify="required" lay-reqtext="请输入存储桶名称" placeholder="请输入存储桶名称" value="{:sysconfig('upload','txcos_bucket')}">
|
||||
<tip>例子:ulthon-admin-1251997243</tip>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item show-type-item txcos" >
|
||||
<div class="layui-form-item show-type-item txcos">
|
||||
<label class="layui-form-label required">访问域名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="txcos_domain" class="layui-input" lay-verify="required" lay-reqtext="请输入访问域名" placeholder="请输入访问域名" value="{:sysconfig('upload','txcos_domain')}">
|
||||
@@ -104,7 +110,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item show-type-item qnoss" >
|
||||
<div class="layui-form-item show-type-item qnoss">
|
||||
<label class="layui-form-label required">公钥信息</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="qnoss_access_key" class="layui-input" lay-verify="required" lay-reqtext="请输入公钥信息" placeholder="请输入公钥信息" value="{:sysconfig('upload','qnoss_access_key')}">
|
||||
@@ -112,7 +118,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item show-type-item qnoss" >
|
||||
<div class="layui-form-item show-type-item qnoss">
|
||||
<label class="layui-form-label required">私钥信息</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="qnoss_secret_key" class="layui-input" lay-verify="required" lay-reqtext="请输入私钥信息" placeholder="请输入私钥信息" value="{:sysconfig('upload','qnoss_secret_key')}">
|
||||
@@ -120,7 +126,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item show-type-item qnoss" >
|
||||
<div class="layui-form-item show-type-item qnoss">
|
||||
<label class="layui-form-label required">存储空间</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="qnoss_bucket" class="layui-input" lay-verify="required" lay-reqtext="请输入存储桶地域" placeholder="请输入存储桶地域" value="{:sysconfig('upload','qnoss_bucket')}">
|
||||
@@ -128,7 +134,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item show-type-item qnoss" >
|
||||
<div class="layui-form-item show-type-item qnoss">
|
||||
<label class="layui-form-label required">访问域名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="qnoss_domain" class="layui-input" lay-verify="required" lay-reqtext="请输入访问域名" placeholder="请输入访问域名" value="{:sysconfig('upload','qnoss_domain')}">
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
namespace app\common\service;
|
||||
|
||||
use app\admin\model\SystemUploadfile;
|
||||
use app\common\tools\PathTools;
|
||||
use think\facade\App;
|
||||
use think\facade\Filesystem;
|
||||
use think\facade\Validate;
|
||||
use think\File;
|
||||
@@ -97,16 +99,16 @@ class UploadService
|
||||
}
|
||||
|
||||
|
||||
$save_name = Filesystem::disk($this->uploadType)->putFile($upload_dir, $file, function () use ($save_name,$file) {
|
||||
$save_name = Filesystem::disk($this->uploadType)->putFile($upload_dir, $file, function () use ($save_name, $file) {
|
||||
if (!is_null($save_name)) {
|
||||
|
||||
$ext_name = $file->extension();
|
||||
|
||||
if(empty($ext_name)){
|
||||
if (empty($ext_name)) {
|
||||
return $save_name;
|
||||
}
|
||||
|
||||
$list_name = explode('.',$save_name);
|
||||
$list_name = explode('.', $save_name);
|
||||
|
||||
array_pop($list_name);
|
||||
|
||||
@@ -123,10 +125,31 @@ class UploadService
|
||||
$model_file->sha1 = $file->sha1();
|
||||
|
||||
$model_file->file_size = $file->getSize();
|
||||
|
||||
|
||||
if (!$disable_model) {
|
||||
$model_file->save();
|
||||
}
|
||||
return $model_file;
|
||||
}
|
||||
|
||||
public function saveUrlFile($url, string $save_name = null, $force_save = false, $upload_dir = 'upload', $disable_model = false)
|
||||
{
|
||||
|
||||
$runtime_path = App::getRuntimePath() . 'upload/temp/' . basename($url);
|
||||
|
||||
PathTools::intiDir($runtime_path);
|
||||
|
||||
|
||||
$file_content = file_get_contents($url);
|
||||
|
||||
file_put_contents($runtime_path, $file_content);
|
||||
|
||||
$file = new File($runtime_path);
|
||||
|
||||
$response = $this->save($file, $save_name, $force_save, $upload_dir, $disable_model);
|
||||
|
||||
unlink($runtime_path);
|
||||
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,21 +14,21 @@ return [
|
||||
],
|
||||
'local_public' => [
|
||||
// 磁盘类型
|
||||
'type' => 'local',
|
||||
'type' => 'LocalPublic',
|
||||
// 磁盘路径
|
||||
'root' => app()->getRootPath() . 'public/storage',
|
||||
// 磁盘路径对应的外部URL路径
|
||||
'url' => Request::domain() . '/storage',
|
||||
'url' => '/storage',
|
||||
// 可见性
|
||||
'visibility' => 'public',
|
||||
],
|
||||
'local_static' => [
|
||||
// 磁盘类型
|
||||
'type' => 'local',
|
||||
'type' => 'LocalPublic',
|
||||
// 磁盘路径
|
||||
'root' => app()->getRootPath() . 'public/static',
|
||||
// 磁盘路径对应的外部URL路径
|
||||
'url' => Request::domain() . '/static',
|
||||
'url' => '/static',
|
||||
// 可见性
|
||||
'visibility' => 'public',
|
||||
],
|
||||
|
||||
30
extend/think/filesystem/driver/LocalPublic.php
Normal file
30
extend/think/filesystem/driver/LocalPublic.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace think\filesystem\driver;
|
||||
|
||||
use think\facade\Request;
|
||||
|
||||
class LocalPublic extends Local
|
||||
{
|
||||
public function url(string $path): string
|
||||
{
|
||||
|
||||
$url = sysconfig('upload', 'local_domain');
|
||||
|
||||
if (empty($url)) {
|
||||
$host = Request::host();
|
||||
|
||||
if (!empty($host)) {
|
||||
$url = Request::domain();
|
||||
}
|
||||
}
|
||||
if (isset($this->config['url'])) {
|
||||
$url = trim($url, '/') . '/' . trim($this->config['url'], '/');
|
||||
}
|
||||
|
||||
if (isset($url)) {
|
||||
return $this->concatPathToUrl($url, $path);
|
||||
}
|
||||
return parent::url($path);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user