mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2025-04-06 03:58:04 +08:00
[更新]完善AliOSS支持
This commit is contained in:
parent
573b2f4946
commit
81ec32a31d
@ -15,7 +15,9 @@
|
|||||||
namespace app\admin\controller;
|
namespace app\admin\controller;
|
||||||
|
|
||||||
use controller\BasicAdmin;
|
use controller\BasicAdmin;
|
||||||
|
use OSS\OssClient;
|
||||||
use service\FileService;
|
use service\FileService;
|
||||||
|
use think\View;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 插件助手控制器
|
* 插件助手控制器
|
||||||
@ -40,7 +42,7 @@ class Plugs extends BasicAdmin {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件上传
|
* 文件上传
|
||||||
* @return \think\response\View
|
* @return View
|
||||||
*/
|
*/
|
||||||
public function upfile() {
|
public function upfile() {
|
||||||
$types = $this->request->get('type', 'jpg,png');
|
$types = $this->request->get('type', 'jpg,png');
|
||||||
@ -94,6 +96,14 @@ class Plugs extends BasicAdmin {
|
|||||||
case 'local':
|
case 'local':
|
||||||
$config['server'] = FileService::getUploadLocalUrl();
|
$config['server'] = FileService::getUploadLocalUrl();
|
||||||
break;
|
break;
|
||||||
|
case 'oss':
|
||||||
|
$time = time() + 3600;
|
||||||
|
$policyText = ['expiration' => date('Y-m-d', $time) . 'T' . date('H:i:s') . '.000Z', 'conditions' => [['content-length-range', 0, 1048576000]]];
|
||||||
|
$config['policy'] = base64_encode(json_encode($policyText));
|
||||||
|
$config['server'] = FileService::getUploadOssUrl();
|
||||||
|
$config['site_url'] = FileService::getBaseUriOss() . $filename;
|
||||||
|
$config['signature'] = base64_encode(hash_hmac('sha1', $config['policy'], sysconf('storage_oss_secret'), true));
|
||||||
|
$config['OSSAccessKeyId'] = sysconf('storage_oss_keyid');
|
||||||
}
|
}
|
||||||
$this->result($config, 'NOT_FOUND');
|
$this->result($config, 'NOT_FOUND');
|
||||||
}
|
}
|
||||||
|
@ -196,8 +196,13 @@
|
|||||||
console.log('文件秒传成功 --> ' + file.name);
|
console.log('文件秒传成功 --> ' + file.name);
|
||||||
} else {
|
} else {
|
||||||
file.md5 = md5;
|
file.md5 = md5;
|
||||||
file.token = ret.data.token;
|
file.token = ret.data.token || '';
|
||||||
file.key = ret.data.file_url;
|
file.key = ret.data.file_url || '';
|
||||||
|
file.site_url = ret.data.site_url || '';
|
||||||
|
me.options.formData.OSSAccessKeyId = ret.data.OSSAccessKeyId || ''; // OSS
|
||||||
|
me.options.formData.signature = ret.data.signature; // OSS
|
||||||
|
me.options.formData.policy = ret.data.policy; // OSS
|
||||||
|
me.options.formData.success_action_status = '200'; // OSS
|
||||||
me.options.server = ret.data.server;
|
me.options.server = ret.data.server;
|
||||||
}
|
}
|
||||||
deferred.resolve();
|
deferred.resolve();
|
||||||
@ -240,16 +245,31 @@
|
|||||||
fileSingleSizeLimit: 200 * 1024 * 1024 // 200 M
|
fileSingleSizeLimit: 200 * 1024 * 1024 // 200 M
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/* 上传开始前的处理 */
|
||||||
|
uploader.on('uploadBeforeSend', function (file, data, header) {
|
||||||
|
header['X_Requested_With'] = 'XMLHttpRequest';
|
||||||
|
data['allowed_types'] = this.options.accept[0].extensions.split(',').join('|');
|
||||||
|
data['md5'] = file.file.md5;
|
||||||
|
data['key'] = file.file.key;
|
||||||
|
data['token'] = file.file.token;
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理上传后的结果
|
* 处理上传后的结果
|
||||||
* @param {type} file
|
* @param {type} file
|
||||||
* @returns {undefined}
|
* @returns {undefined}
|
||||||
*/
|
*/
|
||||||
uploader.on('uploadAccept', function (fieldata, ret) {
|
uploader.on('uploadAccept', function (fieldata, ret) {
|
||||||
|
// Qiniu or Local 上传
|
||||||
if (ret.code === 'SUCCESS') {
|
if (ret.code === 'SUCCESS') {
|
||||||
uploaded.call(uploader, ret.data, fieldata.file);
|
uploaded.call(uploader, ret.data, fieldata.file);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
// AliOSS 上传
|
||||||
|
if (fieldata.file.site_url) {
|
||||||
|
uploaded.call(uploader, {'site_url': fieldata.file.site_url}, fieldata.file);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -266,14 +286,7 @@
|
|||||||
return !denied;
|
return !denied;
|
||||||
});
|
});
|
||||||
|
|
||||||
/* 上传开始前的处理 */
|
|
||||||
uploader.on('uploadBeforeSend', function (file, data, header) {
|
|
||||||
header['X_Requested_With'] = 'XMLHttpRequest';
|
|
||||||
data['allowed_types'] = this.options.accept[0].extensions.split(',').join('|');
|
|
||||||
data['md5'] = file.file.md5;
|
|
||||||
data['key'] = file.file.key;
|
|
||||||
data['token'] = file.file.token;
|
|
||||||
});
|
|
||||||
|
|
||||||
// 添加“添加文件”的按钮,
|
// 添加“添加文件”的按钮,
|
||||||
uploader.addButton({
|
uploader.addButton({
|
||||||
@ -484,7 +497,6 @@
|
|||||||
if (stats.successNum) {
|
if (stats.successNum) {
|
||||||
completed.call(this);
|
completed.call(this);
|
||||||
} else {
|
} else {
|
||||||
// 没有成功的文件,重设
|
|
||||||
state = 'done';
|
state = 'done';
|
||||||
location.reload();
|
location.reload();
|
||||||
}
|
}
|
||||||
@ -515,9 +527,7 @@
|
|||||||
uploader.onfieldequeued = function (file) {
|
uploader.onfieldequeued = function (file) {
|
||||||
fileCount--;
|
fileCount--;
|
||||||
fileSize -= file.size;
|
fileSize -= file.size;
|
||||||
if (!fileCount) {
|
!fileCount && setState('pedding');
|
||||||
setState('pedding');
|
|
||||||
}
|
|
||||||
removeFile(file);
|
removeFile(file);
|
||||||
updateTotalProgress();
|
updateTotalProgress();
|
||||||
};
|
};
|
||||||
|
@ -64,6 +64,8 @@ class FileService {
|
|||||||
return self::getBaseUriLocal() . $filename;
|
return self::getBaseUriLocal() . $filename;
|
||||||
case 'qiniu':
|
case 'qiniu':
|
||||||
return self::getBaseUriQiniu() . $filename;
|
return self::getBaseUriQiniu() . $filename;
|
||||||
|
case 'oss':
|
||||||
|
return self::getBaseUriOss() . $filename;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -109,6 +111,14 @@ class FileService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取AliOSS上传地址
|
||||||
|
* @return type
|
||||||
|
*/
|
||||||
|
public static function getUploadOssUrl() {
|
||||||
|
return (request()->isSsl() ? 'https' : 'http') . '://' . sysconf('storage_oss_domain');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取服务器URL前缀
|
* 获取服务器URL前缀
|
||||||
* @return string
|
* @return string
|
||||||
@ -154,6 +164,9 @@ class FileService {
|
|||||||
$bucketMgr = new BucketManager($auth);
|
$bucketMgr = new BucketManager($auth);
|
||||||
list($ret, $err) = $bucketMgr->stat(sysconf('storage_qiniu_bucket'), $filename);
|
list($ret, $err) = $bucketMgr->stat(sysconf('storage_qiniu_bucket'), $filename);
|
||||||
return $err === null;
|
return $err === null;
|
||||||
|
case 'oss':
|
||||||
|
$ossClient = new OssClient(sysconf('storage_oss_keyid'), sysconf('storage_oss_secret'), self::getBaseUriOss(), true);
|
||||||
|
return $ossClient->doesObjectExist(sysconf('storage_oss_bucket'), $filename);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -174,6 +187,9 @@ class FileService {
|
|||||||
case 'qiniu':
|
case 'qiniu':
|
||||||
$auth = new Auth(sysconf('storage_qiniu_access_key'), sysconf('storage_qiniu_secret_key'));
|
$auth = new Auth(sysconf('storage_qiniu_access_key'), sysconf('storage_qiniu_secret_key'));
|
||||||
return file_get_contents($auth->privateDownloadUrl(self::getBaseUriQiniu() . $filename));
|
return file_get_contents($auth->privateDownloadUrl(self::getBaseUriQiniu() . $filename));
|
||||||
|
case 'oss':
|
||||||
|
$ossClient = new OssClient(sysconf('storage_oss_keyid'), sysconf('storage_oss_secret'), self::getBaseUriOss(), true);
|
||||||
|
return $ossClient->getObject(sysconf('storage_oss_bucket'), $filename);
|
||||||
}
|
}
|
||||||
Log::error("通过{$storage}读取文件{$filename}的不存在!");
|
Log::error("通过{$storage}读取文件{$filename}的不存在!");
|
||||||
return null;
|
return null;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user