新增OSS,COS上传
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -4,6 +4,7 @@
|
||||
.env
|
||||
config/install/lock/install.lock
|
||||
/public/upload
|
||||
/public/storage
|
||||
/public/docs
|
||||
runtime/admin
|
||||
runtime/log
|
||||
|
||||
@@ -25,4 +25,11 @@ return [
|
||||
'login/index',
|
||||
'login/out',
|
||||
],
|
||||
|
||||
//上传类型
|
||||
'upload_types' => [
|
||||
'local' => '本地存储',
|
||||
'oss' => '阿里云oss',
|
||||
'cos' => '腾讯云cos'
|
||||
],
|
||||
];
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\admin\model\SystemUploadfile;
|
||||
use app\admin\service\UploadService;
|
||||
use app\common\controller\AdminController;
|
||||
use app\common\service\MenuService;
|
||||
use app\admin\service\upload\Uploadfile;
|
||||
@@ -59,75 +60,36 @@ class Ajax extends AdminController
|
||||
{
|
||||
$this->isDemo && $this->error('演示环境下不允许修改');
|
||||
$this->checkPostRequest();
|
||||
$type = $this->request->param('type', '');
|
||||
$data = [
|
||||
'upload_type' => $this->request->post('upload_type'),
|
||||
'file' => $this->request->file('file'),
|
||||
'file' => $this->request->file($type == 'editor' ? 'upload' : 'file'),
|
||||
];
|
||||
$uploadConfig = sysconfig('upload');
|
||||
empty($data['upload_type']) && $data['upload_type'] = $uploadConfig['upload_type'];
|
||||
$rule = [
|
||||
'upload_type|指定上传类型有误' => "in:{$uploadConfig['upload_allow_type']}",
|
||||
'file|文件' => "require|file|fileExt:{$uploadConfig['upload_allow_ext']}|fileSize:{$uploadConfig['upload_allow_size']}",
|
||||
'file|文件' => "require|file|fileExt:{$uploadConfig['upload_allow_ext']}|fileSize:{$uploadConfig['upload_allow_size']}",
|
||||
];
|
||||
$this->validate($data, $rule);
|
||||
$upload_type = $uploadConfig['upload_type'];
|
||||
try {
|
||||
$upload = Uploadfile::instance()
|
||||
->setUploadType($data['upload_type'])
|
||||
->setUploadConfig($uploadConfig)
|
||||
->setFile($data['file'])
|
||||
->save();
|
||||
$upload = UploadService::instance()->setConfig($uploadConfig)->$upload_type($data['file'], $type);
|
||||
} catch (\Exception $e) {
|
||||
return $this->error($e->getMessage());
|
||||
}
|
||||
if ($upload['save'] == true) {
|
||||
$this->success($upload['msg'], ['url' => $upload['url']]);
|
||||
$code = $upload['code'] ?? 0;
|
||||
if ($code == 0) {
|
||||
return $this->error($upload['data'] ?? '');
|
||||
} else {
|
||||
$this->error($upload['msg']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传图片至编辑器
|
||||
* @return Json
|
||||
*/
|
||||
public function uploadEditor(): Json
|
||||
{
|
||||
$this->isDemo && $this->error('演示环境下不允许修改');
|
||||
$this->checkPostRequest();
|
||||
$data = [
|
||||
'upload_type' => $this->request->post('upload_type'),
|
||||
'file' => $this->request->file('upload'),
|
||||
];
|
||||
$uploadConfig = sysconfig('upload');
|
||||
empty($data['upload_type']) && $data['upload_type'] = $uploadConfig['upload_type'];
|
||||
$rule = [
|
||||
'upload_type|指定上传类型有误' => "in:{$uploadConfig['upload_allow_type']}",
|
||||
'file|文件' => "require|file|fileExt:{$uploadConfig['upload_allow_ext']}|fileSize:{$uploadConfig['upload_allow_size']}",
|
||||
];
|
||||
$this->validate($data, $rule);
|
||||
try {
|
||||
$upload = Uploadfile::instance()
|
||||
->setUploadType($data['upload_type'])
|
||||
->setUploadConfig($uploadConfig)
|
||||
->setFile($data['file'])
|
||||
->save();
|
||||
} catch (\Exception $e) {
|
||||
return $this->error($e->getMessage());
|
||||
}
|
||||
if ($upload['save'] == true) {
|
||||
return json([
|
||||
'error' => ['message' => '上传成功', 'number' => 201,],
|
||||
'fileName' => '',
|
||||
'uploaded' => 1,
|
||||
'url' => $upload['url'],
|
||||
]);
|
||||
} else {
|
||||
return json([
|
||||
'error' => ['message' => $upload['msg'], 'number' => -1,],
|
||||
'fileName' => '',
|
||||
'uploaded' => 0,
|
||||
'url' => '',
|
||||
]);
|
||||
return $type == 'editor' ? json(
|
||||
[
|
||||
'error' => ['message' => '上传成功', 'number' => 201,],
|
||||
'fileName' => '',
|
||||
'uploaded' => 1,
|
||||
'url' => $upload['data']['url'] ?? '',
|
||||
]
|
||||
) : $this->success('上传成功', $upload['data'] ?? '');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ class Config extends AdminController
|
||||
{
|
||||
parent::__construct($app);
|
||||
$this->model = new SystemConfig();
|
||||
$this->assign('upload_types', config('admin.upload_types'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -39,12 +40,24 @@ class Config extends AdminController
|
||||
$this->checkPostRequest();
|
||||
$post = $this->request->post();
|
||||
try {
|
||||
$group = $post['group'] ?? '';
|
||||
if (empty($group)) $this->error('保存失败');
|
||||
if ($group == 'upload') {
|
||||
$upload_types = config('admin.upload_types');
|
||||
// 兼容旧版本
|
||||
$this->model->where('name', 'upload_allow_type')->update(['value' => implode(',', array_keys($upload_types))]);
|
||||
}
|
||||
foreach ($post as $key => $val) {
|
||||
$this->model
|
||||
->where('name', $key)
|
||||
->update([
|
||||
'value' => $val,
|
||||
]);
|
||||
if ($this->model->where('name', $key)->count()) {
|
||||
$this->model->where('name', $key)->update(['value' => $val,]);
|
||||
} else {
|
||||
$this->model->save(
|
||||
[
|
||||
'name' => $key,
|
||||
'value' => $val,
|
||||
'group' => $group,
|
||||
]);
|
||||
}
|
||||
}
|
||||
TriggerService::updateMenu();
|
||||
TriggerService::updateSysconfig();
|
||||
|
||||
182
app/admin/service/UploadService.php
Normal file
182
app/admin/service/UploadService.php
Normal file
@@ -0,0 +1,182 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\service;
|
||||
|
||||
use app\admin\model\SystemUploadfile;
|
||||
use OSS\Core\OssException;
|
||||
use OSS\OssClient;
|
||||
use think\facade\Env;
|
||||
use think\file\UploadedFile;
|
||||
use think\helper\Str;
|
||||
use Qcloud\Cos\Client;
|
||||
|
||||
class UploadService
|
||||
{
|
||||
public static ?UploadService $_instance = null;
|
||||
protected array $options = [];
|
||||
private array $saveData;
|
||||
|
||||
public static function instance(): ?UploadService
|
||||
{
|
||||
if (!static::$_instance) static::$_instance = new static();
|
||||
return static::$_instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $options
|
||||
* @return $this
|
||||
*/
|
||||
public function setConfig(array $options = []): UploadService
|
||||
{
|
||||
$this->options = $options;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getConfig(): array
|
||||
{
|
||||
return $this->options;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param UploadedFile $file
|
||||
* @param string $base_path
|
||||
* @return string
|
||||
*/
|
||||
protected function setFilePath(UploadedFile $file, string $base_path = ''): string
|
||||
{
|
||||
$path = date('Ymd') . '/' . Str::random(3) . time() . Str::random() . '.' . $file->extension();
|
||||
return $base_path . $path;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param UploadedFile $file
|
||||
* @return UploadService
|
||||
*/
|
||||
protected function setSaveData(UploadedFile $file): static
|
||||
{
|
||||
$options = $this->options;
|
||||
$data = [
|
||||
'upload_type' => $options['upload_type'],
|
||||
'original_name' => $file->getOriginalName(),
|
||||
'mime_type' => $file->getMime(),
|
||||
'file_size' => $file->getSize(),
|
||||
'file_ext' => strtolower($file->extension()),
|
||||
'create_time' => time(),
|
||||
];
|
||||
$this->saveData = $data;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 本地存储
|
||||
*
|
||||
* @param UploadedFile $file
|
||||
* @param string $type
|
||||
* @return array
|
||||
*/
|
||||
public function local(UploadedFile $file, string $type = ''): array
|
||||
{
|
||||
if ($file->isValid()) {
|
||||
$base_path = '/storage/' . date('Ymd') . '/';
|
||||
// 上传文件的目标文件夹
|
||||
$destinationPath = public_path() . $base_path;
|
||||
$this->setSaveData($file);
|
||||
// 将文件移动到目标文件夹中
|
||||
$move = $file->move($destinationPath, Str::random(3) . time() . Str::random() . session('admin.id') . '.' . $file->extension());
|
||||
$url = $base_path . $move->getFilename();
|
||||
$data = ['url' => $url];
|
||||
$this->save($url);
|
||||
return ['code' => 1, 'data' => $data];
|
||||
}
|
||||
$data = '上传失败';
|
||||
return ['code' => 0, 'data' => $data];
|
||||
}
|
||||
|
||||
/**
|
||||
* 阿里云OSS
|
||||
*
|
||||
* @param UploadedFile $file
|
||||
* @param string $type
|
||||
* @return array
|
||||
*/
|
||||
public function oss(UploadedFile $file, string $type = ''): array
|
||||
{
|
||||
$config = $this->getConfig();
|
||||
$accessKeyId = $config['oss_access_key_id'];
|
||||
$accessKeySecret = $config['oss_access_key_secret'];
|
||||
$endpoint = $config['oss_endpoint'];
|
||||
$bucket = $config['oss_bucket'];
|
||||
if ($file->isValid()) {
|
||||
$object = $this->setFilePath($file, Env::get('EASYADMIN.OSS_STATIC_PREFIX', 'easyadmin8') . '/');
|
||||
try {
|
||||
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
|
||||
$_rs = $ossClient->putObject($bucket, $object, file_get_contents($file->getRealPath()));
|
||||
$oss_request_url = $_rs['oss-request-url'] ?? '';
|
||||
if (empty($oss_request_url)) return ['code' => 0, 'data' => '上传至OSS失败'];
|
||||
$oss_request_url = str_replace('http://', 'https://', $oss_request_url);
|
||||
$this->setSaveData($file);
|
||||
} catch (OssException $e) {
|
||||
return ['code' => 0, 'data' => $e->getMessage()];
|
||||
}
|
||||
$data = ['url' => $oss_request_url];
|
||||
$this->save($oss_request_url);
|
||||
return ['code' => 1, 'data' => $data];
|
||||
}
|
||||
$data = '上传失败';
|
||||
return ['code' => 0, 'data' => $data];
|
||||
}
|
||||
|
||||
/**
|
||||
* 腾讯云cos
|
||||
*
|
||||
* @param UploadedFile $file
|
||||
* @param string $type
|
||||
* @return array
|
||||
*/
|
||||
public function cos(UploadedFile $file, string $type = ''): array
|
||||
{
|
||||
$config = $this->getConfig();
|
||||
$secretId = $config['cos_secret_id']; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
|
||||
$secretKey = $config['cos_secret_key']; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
|
||||
$region = $config['cos_region']; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
|
||||
if ($file->isValid()) {
|
||||
$cosClient = new Client(
|
||||
[
|
||||
'region' => $region,
|
||||
'schema' => 'http',
|
||||
'credentials' => ['secretId' => $secretId, 'secretKey' => $secretKey,
|
||||
],
|
||||
]);
|
||||
try {
|
||||
$object = $this->setFilePath($file, Env::get('EASYADMIN.OSS_STATIC_PREFIX', 'easyadmin8') . '/');
|
||||
$result = $cosClient->upload(
|
||||
$config['cos_bucket'], //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket
|
||||
$object, //此处的 key 为对象键
|
||||
file_get_contents($file->getRealPath())
|
||||
);
|
||||
$location = $result['Location'] ?? '';
|
||||
if (empty($location)) return ['code' => 0, 'data' => '上传至COS失败'];
|
||||
$location = 'https://' . $location;
|
||||
$this->setSaveData($file);
|
||||
} catch (\Exception $e) {
|
||||
return ['code' => 0, 'data' => $e->getMessage()];
|
||||
}
|
||||
$data = ['url' => $location];
|
||||
$this->save($location);
|
||||
return ['code' => 1, 'data' => $data];
|
||||
}
|
||||
$data = '上传失败';
|
||||
return ['code' => 0, 'data' => $data];
|
||||
}
|
||||
|
||||
protected function save(string $url = ''): bool
|
||||
{
|
||||
$data = $this->saveData;
|
||||
$data['url'] = $url;
|
||||
$data['upload_time'] = time();
|
||||
return (new SystemUploadfile())->save($data);
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
<?php
|
||||
|
||||
|
||||
|
||||
namespace app\admin\service\upload;
|
||||
|
||||
use app\admin\service\upload\driver\Alioss;
|
||||
@@ -113,18 +112,16 @@ class Uploadfile
|
||||
$obj = null;
|
||||
if ($this->uploadType == 'local') {
|
||||
$obj = new Local();
|
||||
} elseif ($this->uploadType == 'alioss') {
|
||||
} elseif ($this->uploadType == 'oss') {
|
||||
$obj = new Alioss();
|
||||
} elseif ($this->uploadType == 'qnoss') {
|
||||
$obj = new Qnoss();
|
||||
} elseif ($this->uploadType == 'txcos') {
|
||||
} elseif ($this->uploadType == 'cos') {
|
||||
$obj = new Txcos();
|
||||
}
|
||||
$save = $obj->setUploadConfig($this->uploadConfig)
|
||||
->setUploadType($this->uploadType)
|
||||
->setTableName($this->tableName)
|
||||
->setFile($this->file)
|
||||
->save();
|
||||
->setUploadType($this->uploadType)
|
||||
->setTableName($this->tableName)
|
||||
->setFile($this->file)
|
||||
->save();
|
||||
return $save;
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,9 @@
|
||||
|
||||
<div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this">网站设置</li>
|
||||
<li>LOGO配置</li>
|
||||
<li>上传配置</li>
|
||||
<li class="layui-this" data-group="site">网站设置</li>
|
||||
<li data-group="logo">LOGO配置</li>
|
||||
<li data-group="upload">上传配置</li>
|
||||
</ul>
|
||||
<div class="layui-tab-content">
|
||||
<div class="layui-tab-item layui-show">
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
<form id="app-form" class="layui-form layuimini-form">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">存储方式</label>
|
||||
<div class="layui-input-block">
|
||||
{foreach ['local'=>'本地存储','alioss'=>'阿里云oss','qnoss'=>'七牛云oss','txcos'=>'腾讯云cos'] as $key=>$val}
|
||||
{foreach $upload_types 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}>
|
||||
{/foreach}
|
||||
</div>
|
||||
@@ -25,74 +24,74 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" v-if="upload_type == 'alioss'" v-cloak>
|
||||
<div class="layui-form-item" v-if="upload_type == 'oss'" v-cloak>
|
||||
<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')}">
|
||||
<input type="text" name="oss_access_key_id" class="layui-input" lay-verify="required" lay-reqtext="请输入公钥信息" placeholder="请输入公钥信息" value="{:sysconfig('upload','oss_access_key_id')}">
|
||||
<tip>例子:FSGGshu64642THSk</tip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" v-if="upload_type == 'alioss'" v-cloak>
|
||||
<div class="layui-form-item" v-if="upload_type == 'oss'" v-cloak>
|
||||
<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')}">
|
||||
<input type="text" name="oss_access_key_secret" class="layui-input" lay-verify="required" lay-reqtext="请输入私钥信息" placeholder="请输入私钥信息" value="{:sysconfig('upload','oss_access_key_secret')}">
|
||||
<tip>例子:5fsfPReYKkFSGGshu64642THSkmTInaIm</tip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" v-if="upload_type == 'alioss'" v-cloak>
|
||||
<div class="layui-form-item" v-if="upload_type == 'oss'" v-cloak>
|
||||
<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')}">
|
||||
<input type="text" name="oss_endpoint" class="layui-input" lay-verify="required" lay-reqtext="请输入数据中心" placeholder="请输入数据中心" value="{:sysconfig('upload','oss_endpoint')}">
|
||||
<tip>例子:https://oss-cn-shenzhen.aliyuncs.com</tip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" v-if="upload_type == 'alioss'" v-cloak>
|
||||
<div class="layui-form-item" v-if="upload_type == 'oss'" v-cloak>
|
||||
<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')}">
|
||||
<input type="text" name="oss_bucket" class="layui-input" lay-verify="required" lay-reqtext="请输入空间名称" placeholder="请输入空间名称" value="{:sysconfig('upload','oss_bucket')}">
|
||||
<tip>例子:easy-admin</tip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" v-if="upload_type == 'alioss'" v-cloak>
|
||||
<div class="layui-form-item" v-if="upload_type == 'oss'" v-cloak>
|
||||
<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')}">
|
||||
<input type="text" name="oss_domain" class="layui-input" lay-verify="required" lay-reqtext="请输入访问域名" placeholder="请输入访问域名" value="{:sysconfig('upload','oss_domain')}">
|
||||
<tip>例子:easy-admin.oss-cn-shenzhen.aliyuncs.com</tip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" v-if="upload_type == 'txcos'" v-cloak>
|
||||
<div class="layui-form-item" v-if="upload_type == 'cos'" v-cloak>
|
||||
<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')}">
|
||||
<input type="text" name="cos_secret_id" class="layui-input" lay-verify="required" lay-reqtext="请输入公钥信息" placeholder="请输入公钥信息" value="{:sysconfig('upload','cos_secret_id')}">
|
||||
<tip>例子:AKIDta6OQCbALQGrCI6ngKwQffR3dfsfrwrfs</tip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" v-if="upload_type == 'txcos'" v-cloak>
|
||||
<div class="layui-form-item" v-if="upload_type == 'cos'" v-cloak>
|
||||
<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')}">
|
||||
<input type="text" name="cos_secret_key" class="layui-input" lay-verify="required" lay-reqtext="请输入私钥信息" placeholder="请输入私钥信息" value="{:sysconfig('upload','cos_secret_key')}">
|
||||
<tip>例子:VllEWYKtClAbpqfFdTqysXxGQM6dsfs</tip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" v-if="upload_type == 'txcos'" v-cloak>
|
||||
<div class="layui-form-item" v-if="upload_type == 'cos'" v-cloak>
|
||||
<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')}">
|
||||
<input type="text" name="cos_region" class="layui-input" lay-verify="required" lay-reqtext="请输入存储桶地域" placeholder="请输入存储桶地域" value="{:sysconfig('upload','cos_region')}">
|
||||
<tip>例子:ap-guangzhou</tip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" v-if="upload_type == 'txcos'" v-cloak>
|
||||
<div class="layui-form-item" v-if="upload_type == 'cos'" v-cloak>
|
||||
<label class="layui-form-label required">存储桶名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="tecos_bucket" class="layui-input" lay-verify="required" lay-reqtext="请输入存储桶名称" placeholder="请输入存储桶名称" value="{:sysconfig('upload','tecos_bucket')}">
|
||||
<input type="text" name="cos_bucket" class="layui-input" lay-verify="required" lay-reqtext="请输入存储桶名称" placeholder="请输入存储桶名称" value="{:sysconfig('upload','cos_bucket')}">
|
||||
<tip>例子:easyadmin-1251997243</tip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -210,7 +210,7 @@ VALUES ('41', 'alisms_access_key_id', 'sms', '填你的', '阿里大于公钥',
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('42', 'alisms_access_key_secret', 'sms', '填你的', '阿里大鱼私钥', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('55', 'upload_type', 'upload', 'local', '当前上传方式 (local,alioss,qnoss,txoss)', '0', null, null);
|
||||
VALUES ('55', 'upload_type', 'upload', 'local', '当前上传方式 (local,oss,cos)', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('56', 'upload_allow_ext', 'upload', 'doc,gif,ico,icon,jpg,mp3,mp4,p12,pem,png,rar,jpeg', '允许上传的文件类型', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
@@ -218,17 +218,17 @@ VALUES ('57', 'upload_allow_size', 'upload', '1024000', '允许上传的大小',
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('58', 'upload_allow_mime', 'upload', 'image/gif,image/jpeg,video/x-msvideo,text/plain,image/png', '允许上传的文件mime', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('59', 'upload_allow_type', 'upload', 'local,alioss,qnoss,txcos', '可用的上传文件方式', '0', null, null);
|
||||
VALUES ('59', 'upload_allow_type', 'upload', 'local,oss,qnoss,cos', '可用的上传文件方式', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('60', 'alioss_access_key_id', 'upload', '填你的', '阿里云oss公钥', '0', null, null);
|
||||
VALUES ('60', 'oss_access_key_id', 'upload', '填你的', '阿里云oss公钥', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('61', 'alioss_access_key_secret', 'upload', '填你的', '阿里云oss私钥', '0', null, null);
|
||||
VALUES ('61', 'oss_access_key_secret', 'upload', '填你的', '阿里云oss私钥', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('62', 'alioss_endpoint', 'upload', '填你的', '阿里云oss数据中心', '0', null, null);
|
||||
VALUES ('62', 'oss_endpoint', 'upload', '填你的', '阿里云oss数据中心', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('63', 'alioss_bucket', 'upload', '填你的', '阿里云oss空间名称', '0', null, null);
|
||||
VALUES ('63', 'oss_bucket', 'upload', '填你的', '阿里云oss空间名称', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('64', 'alioss_domain', 'upload', '填你的', '阿里云oss访问域名', '0', null, null);
|
||||
VALUES ('64', 'oss_domain', 'upload', '填你的', '阿里云oss访问域名', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('65', 'logo_title', 'site', 'EasyAdmin', 'LOGO标题', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
@@ -254,13 +254,13 @@ VALUES ('78', 'web_appid', 'wechat', '填你的', '公众号公钥', '0', null,
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('79', 'web_appsecret', 'wechat', '填你的', '公众号私钥', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('80', 'txcos_secret_id', 'upload', '填你的', '腾讯云cos密钥', '0', null, null);
|
||||
VALUES ('80', 'cos_secret_id', 'upload', '填你的', '腾讯云cos密钥', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('81', 'txcos_secret_key', 'upload', '填你的', '腾讯云cos私钥', '0', null, null);
|
||||
VALUES ('81', 'cos_secret_key', 'upload', '填你的', '腾讯云cos私钥', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('82', 'txcos_region', 'upload', '填你的', '存储桶地域', '0', null, null);
|
||||
VALUES ('82', 'cos_region', 'upload', '填你的', '存储桶地域', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('83', 'tecos_bucket', 'upload', '填你的', '存储桶名称', '0', null, null);
|
||||
VALUES ('83', 'cos_bucket', 'upload', '填你的', '存储桶名称', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
VALUES ('84', 'qnoss_access_key', 'upload', '填你的', '访问密钥', '0', null, null);
|
||||
INSERT INTO `ea_system_config`
|
||||
@@ -549,14 +549,14 @@ CREATE TABLE `ea_system_uploadfile`
|
||||
-- Records of ea_system_uploadfile
|
||||
-- ----------------------------
|
||||
INSERT INTO `ea_system_uploadfile`
|
||||
VALUES ('286', 'alioss', 'image/jpeg', 'https://lxn-99php.oss-cn-shenzhen.aliyuncs.com/upload/20191111/0a6de1ac058ee134301501899b84ecb1.jpg', '', '', '', '0', 'image/jpeg', '0', 'jpg', '', 1573612437, null, null);
|
||||
VALUES ('286', 'oss', 'image/jpeg', 'https://lxn-99php.oss-cn-shenzhen.aliyuncs.com/upload/20191111/0a6de1ac058ee134301501899b84ecb1.jpg', '', '', '', '0', 'image/jpeg', '0', 'jpg', '', 1573612437, null, null);
|
||||
INSERT INTO `ea_system_uploadfile`
|
||||
VALUES ('287', 'alioss', 'image/jpeg', 'https://lxn-99php.oss-cn-shenzhen.aliyuncs.com/upload/20191111/46d7384f04a3bed331715e86a4095d15.jpg', '', '', '', '0', 'image/jpeg', '0', 'jpg', '', 1573612437, null, null);
|
||||
VALUES ('287', 'oss', 'image/jpeg', 'https://lxn-99php.oss-cn-shenzhen.aliyuncs.com/upload/20191111/46d7384f04a3bed331715e86a4095d15.jpg', '', '', '', '0', 'image/jpeg', '0', 'jpg', '', 1573612437, null, null);
|
||||
INSERT INTO `ea_system_uploadfile`
|
||||
VALUES ('288', 'alioss', 'image/x-icon', 'https://lxn-99php.oss-cn-shenzhen.aliyuncs.com/upload/20191111/7d32671f4c1d1b01b0b28f45205763f9.ico', '', '', '', '0', 'image/x-icon', '0', 'ico', '', 1573612437, null, null);
|
||||
VALUES ('288', 'oss', 'image/x-icon', 'https://lxn-99php.oss-cn-shenzhen.aliyuncs.com/upload/20191111/7d32671f4c1d1b01b0b28f45205763f9.ico', '', '', '', '0', 'image/x-icon', '0', 'ico', '', 1573612437, null, null);
|
||||
INSERT INTO `ea_system_uploadfile`
|
||||
VALUES ('289', 'alioss', 'image/jpeg', 'https://lxn-99php.oss-cn-shenzhen.aliyuncs.com/upload/20191111/28cefa547f573a951bcdbbeb1396b06f.jpg', '', '', '', '0', 'image/jpeg', '0', 'jpg', '', 1573612437, null, null);
|
||||
VALUES ('289', 'oss', 'image/jpeg', 'https://lxn-99php.oss-cn-shenzhen.aliyuncs.com/upload/20191111/28cefa547f573a951bcdbbeb1396b06f.jpg', '', '', '', '0', 'image/jpeg', '0', 'jpg', '', 1573612437, null, null);
|
||||
INSERT INTO `ea_system_uploadfile`
|
||||
VALUES ('290', 'alioss', 'image/jpeg', 'https://lxn-99php.oss-cn-shenzhen.aliyuncs.com/upload/20191111/2c412adf1b30c8be3a913e603c7b6e4a.jpg', '', '', '', '0', 'image/jpeg', '0', 'jpg', '', 1573612437, null, null);
|
||||
VALUES ('290', 'oss', 'image/jpeg', 'https://lxn-99php.oss-cn-shenzhen.aliyuncs.com/upload/20191111/2c412adf1b30c8be3a913e603c7b6e4a.jpg', '', '', '', '0', 'image/jpeg', '0', 'jpg', '', 1573612437, null, null);
|
||||
INSERT INTO `ea_system_uploadfile`
|
||||
VALUES ('296', 'txcos', 'image/jpeg', 'https://easyadmin-1251997243.cos.ap-guangzhou.myqcloud.com/upload/20191114/2381eaf81208ac188fa994b6f2579953.jpg', '', '', '', '0', 'image/jpeg', '0', 'jpg', '', 1573612437, null, null);
|
||||
VALUES ('296', 'cos', 'image/jpeg', 'https://easyadmin-1251997243.cos.ap-guangzhou.myqcloud.com/upload/20191114/2381eaf81208ac188fa994b6f2579953.jpg', '', '', '', '0', 'image/jpeg', '0', 'jpg', '', 1573612437, null, null);
|
||||
|
||||
@@ -4,6 +4,11 @@ define(["jquery", "easy-admin", "vue"], function ($, ea, Vue) {
|
||||
|
||||
var Controller = {
|
||||
index: function () {
|
||||
var _group = 'site'
|
||||
var element = layui.element;
|
||||
element.on('tab(docDemoTabBrief)', function (data) {
|
||||
_group = $(this).data('group')
|
||||
});
|
||||
|
||||
var app = new Vue({
|
||||
el: '#app',
|
||||
@@ -16,6 +21,10 @@ define(["jquery", "easy-admin", "vue"], function ($, ea, Vue) {
|
||||
app.upload_type = this.value;
|
||||
});
|
||||
|
||||
form.on("submit", function (data) {
|
||||
data.field['group'] = _group
|
||||
});
|
||||
|
||||
ea.listen();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1455,7 +1455,7 @@ define(["jquery", "tableSelect", "ckeditor"], function ($, tableSelect, undefine
|
||||
$(this).attr("name"),
|
||||
{
|
||||
height: $(this).height(),
|
||||
filebrowserImageUploadUrl: admin.url('ajax/uploadEditor'),
|
||||
filebrowserImageUploadUrl: admin.url('ajax/upload?type=editor'),
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user