优化第三方存储链接生成,更符合接口规范;优化上传配置文件;

This commit is contained in:
2022-07-12 09:37:14 +08:00
parent 7659dedf08
commit 713f177b5e
8 changed files with 50 additions and 51 deletions

View File

@@ -1,10 +1,10 @@
<form id="app-form" class="layui-form layuimini-form">
<form id="app-form" class="layui-form layuimini-form show-type">
<input type="hidden" name="group_name" value="upload">
<div class="layui-form-item">
<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" v-model="upload_type" 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>
@@ -25,7 +25,7 @@
</div>
</div>
<div class="layui-form-item" v-if="upload_type == 'alioss'" v-cloak>
<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 +33,7 @@
</div>
</div>
<div class="layui-form-item" v-if="upload_type == 'alioss'" v-cloak>
<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 +41,7 @@
</div>
</div>
<div class="layui-form-item" v-if="upload_type == 'alioss'" v-cloak>
<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 +49,7 @@
</div>
</div>
<div class="layui-form-item" v-if="upload_type == 'alioss'" v-cloak>
<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 +57,7 @@
</div>
</div>
<div class="layui-form-item" v-if="upload_type == 'alioss'" v-cloak>
<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 +65,7 @@
</div>
</div>
<div class="layui-form-item" v-if="upload_type == 'txcos'" v-cloak>
<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 +73,7 @@
</div>
</div>
<div class="layui-form-item" v-if="upload_type == 'txcos'" v-cloak>
<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 +81,7 @@
</div>
</div>
<div class="layui-form-item" v-if="upload_type == 'txcos'" v-cloak>
<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 +89,14 @@
</div>
</div>
<div class="layui-form-item" v-if="upload_type == 'txcos'" v-cloak>
<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" v-if="upload_type == 'txcos'" v-cloak>
<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 +104,7 @@
</div>
</div>
<div class="layui-form-item" v-if="upload_type == 'qnoss'" v-cloak>
<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 +112,7 @@
</div>
</div>
<div class="layui-form-item" v-if="upload_type == 'qnoss'" v-cloak>
<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 +120,7 @@
</div>
</div>
<div class="layui-form-item" v-if="upload_type == 'qnoss'" v-cloak>
<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 +128,7 @@
</div>
</div>
<div class="layui-form-item" v-if="upload_type == 'qnoss'" v-cloak>
<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')}">

View File

@@ -3,6 +3,7 @@
use app\common\service\AuthService;
use think\facade\Cache;
use think\facade\Filesystem;
use think\facade\Request;
use think\route\Url;
@@ -222,32 +223,11 @@ if (!function_exists('unparse_url')) {
}
function build_upload_url($url)
function build_upload_url($url, $upload_type = null)
{
$config = sysconfig('upload');
$upload_type = $config['upload_type'] ?? 'local_public';
$prefix_url = '';
switch ($upload_type) {
case 'local_public':
$prefix_url = Request::domain().'/storage';
break;
case 'qnoss':
$prefix_url = $config['qnoss_domain'];
break;
case 'alioss':
$prefix_url = $config['alioss_domain'];
break;
case 'txcos':
$prefix_url = $config['txcos_domain'];
break;
default:
# code...
break;
if (is_null($upload_type)) {
$upload_type = sysconfig('upload', 'upload_type', 'local_public');
}
return rtrim($prefix_url, '/') . '/' . ltrim($url, '/');
return Filesystem::disk($upload_type)->url($url);
}

View File

@@ -50,6 +50,12 @@ class UploadService
return $this->validate($file, $allow_ext, $allow_size, true);
}
public function url($save_name)
{
$url = Filesystem::disk($this->uploadType)->url($save_name);
return $url;
}
public function save(File $file)
{
@@ -73,7 +79,7 @@ class UploadService
return date('Ymd') . '/' . uniqid();
});
$url = build_upload_url($save_name);
$url = $this->url($save_name);
$model_file->url = $url;
$model_file->save_name = $save_name;

View File

@@ -1,6 +1,7 @@
<?php
use think\facade\Env;
use think\facade\Request;
return [
// 默认磁盘
@@ -17,7 +18,7 @@ return [
// 磁盘路径
'root' => app()->getRootPath() . 'public/storage',
// 磁盘路径对应的外部URL路径
'url' => '/storage',
'url' => Request::domain() . '/storage',
// 可见性
'visibility' => 'public',
],

View File

@@ -22,4 +22,9 @@ class Alioss extends Driver
$config
);
}
public function url(string $path): string
{
return $this->concatPathToUrl(sysconfig('upload', 'alioss_domain'), $path);
}
}

View File

@@ -16,5 +16,10 @@ class Qiniu extends Driver
sysconfig('upload','qnoss_domain')
);
}
public function url(string $path): string
{
return $this->concatPathToUrl(sysconfig('upload', 'qnoss_domain'), $path);
}
}

View File

@@ -32,4 +32,9 @@ class Txcos extends Driver
return $adapter;
}
public function url(string $path): string
{
return $this->concatPathToUrl(sysconfig('upload', 'txcos_domain'), $path);
}
}

View File

@@ -5,15 +5,12 @@ define(["jquery", "easy-admin", "vue"], function ($, ea, Vue) {
var Controller = {
index: function () {
var app = new Vue({
el: '#app',
data: {
upload_type: upload_type
}
});
$('.show-type-item').hide();
$('.show-type-item.' + upload_type).show();
form.on("radio(upload_type)", function (data) {
app.upload_type = this.value;
$('.show-type-item').hide();
$('.show-type-item.' + this.value).show();
});
ea.listen();