调上传插件机制

This commit is contained in:
Anyon 2019-12-20 11:57:44 +08:00
parent 53e6486514
commit 3ce81eca35
3 changed files with 25 additions and 10 deletions

View File

@ -29,6 +29,23 @@ use think\admin\storage\QiniuStorage;
class Upload extends Controller
{
/**
* 文件上传JS支持
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function index()
{
$data = ['exts' => []];
foreach (explode(',', sysconf('storage.allow_exts')) as $ext) {
$data['exts'][$ext] = Storage::mime($ext);
}
$template = realpath(__DIR__ . '/../../view/api/plugs/upload.js');
$data['exts'] = json_encode($data['exts'], JSON_UNESCAPED_UNICODE);
return view($template, $data)->contentType('application/x-javascript');
}
/**
* 上传安全检查
* @login true

View File

@ -1,17 +1,15 @@
define(['md5'], function (SparkMD5) {
var allowExtsMimes = JSON.parse('{$exts|raw}');
return function (element, InitHandler, UploadedHandler) {
var exts = $(element).data('type') || '*';
var exts = [], mimes = [];
var uptype = $(element).attr('data-uptype') || '';
var multiple = $(element).attr('data-multiple') > 0;
var types = ($(element).data('type') || '').split(',');
for (var i in types) if (allowExtsMimes[types[i]]) {
mimes.push(allowExtsMimes[types[i]]), exts.push(types[i]);
}
// 检查可以上传的文件后缀
jQuery.ajax('?s=admin/api.upload/check', {
method: 'POST', data: {exts: exts, uptype: uptype}, success: function (ret, options) {
options = {exts: ret.data.exts, acceptMime: ret.data.mime, data: {}};
if (exts.indexOf('*') > -1) delete options.exts, delete options.acceptMime;
renderUploader(options)
}
});
renderUploader({exts: exts.join('|'), acceptMime: mimes.join(',')});
// 初始化上传组件
function renderUploader(options, headers, uploader) {

View File

@ -30,7 +30,7 @@ require.config({
'md5': ['plugs/jquery/md5.min'],
'json': ['plugs/jquery/json.min'],
'michat': ['plugs/michat/michat'],
'upload': ['plugs/jquery/uploader'],
'upload': ['../admin/api.upload?.js'],
'base64': ['plugs/jquery/base64.min'],
'echarts': ['plugs/echarts/echarts.min'],
'angular': ['plugs/angular/angular.min'],