diff --git a/app/admin/controller/api/Upload.php b/app/admin/controller/api/Upload.php index 81750f653..3ff14aa1f 100644 --- a/app/admin/controller/api/Upload.php +++ b/app/admin/controller/api/Upload.php @@ -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 diff --git a/public/static/plugs/jquery/uploader.js b/app/admin/view/api/plugs/upload.js similarity index 92% rename from public/static/plugs/jquery/uploader.js rename to app/admin/view/api/plugs/upload.js index 1cb170141..515cace94 100644 --- a/public/static/plugs/jquery/uploader.js +++ b/app/admin/view/api/plugs/upload.js @@ -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) { diff --git a/public/static/admin.js b/public/static/admin.js index 80a2ca562..6f6b9e443 100644 --- a/public/static/admin.js +++ b/public/static/admin.js @@ -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'],