From 2bc34f575f7d9c0dd2eb715712cf4d29f1234739 Mon Sep 17 00:00:00 2001 From: Karson <karsonzhang@163.com> Date: Tue, 11 Apr 2017 18:38:20 +0800 Subject: [PATCH] 上传又拍云时可扩展参数 --- application/common/controller/Backend.php | 17 ++--------------- application/common/model/Configvalue.php | 53 ++++++++++++++++++++++++++++++++++++----------------- 2 files changed, 38 insertions(+), 32 deletions(-) diff --git a/application/common/controller/Backend.php b/application/common/controller/Backend.php index 77a436e..d5f4244 100644 --- a/application/common/controller/Backend.php +++ b/application/common/controller/Backend.php @@ -117,26 +117,13 @@ class Backend extends Controller $this->view->engine->layout('layout/' . $this->layout); } - // 上传参数配置配置 - $uploadcfg = Configvalue::upload(); - - $upload = [ - 'uploadurl' => $uploadcfg['uploadurl'], - 'cdnurl' => $uploadcfg['cdnurl'], - 'multipart' => [ - 'policy' => $uploadcfg['policy'], - 'signature' => $uploadcfg['signature'] - ], - 'maxsize' => $uploadcfg['maxsize'], - 'mimetype' => $uploadcfg['mimetype'], - ]; - + // 语言检测 $lang = Lang::detect(); // 配置信息 $config = [ 'site' => Config::get("site"), - 'upload' => $upload, + 'upload' => Configvalue::upload(), 'modulename' => $modulename, 'controllername' => $controllername, 'actionname' => $actionname, diff --git a/application/common/model/Configvalue.php b/application/common/model/Configvalue.php index 2822123..295868a 100644 --- a/application/common/model/Configvalue.php +++ b/application/common/model/Configvalue.php @@ -21,34 +21,53 @@ class Configvalue extends Model /** * 加载上传配置 * - * @param string $savekey 保存路径 例:/{year}/{mon}/{day}/{filemd5}{.suffix} - * @param mixed $mimetype 上传类型 例:image/*,application/zip - * @param int $maxsize 上传文件大小 例:10mb + * @param array $params 扩展参数,常用字段savekey,mimetype,maxsize,ext-param,notify-url,return-url<br> + * 更多字段可参考http://docs.upyun.com/api/form_api/#_2 * * @return array */ - public static function upload($savekey = '', $mimetype = '', $maxsize = '') + public static function upload($params = []) { $uploadcfg = Config::get('upload'); $uploadcfg = $uploadcfg ? $uploadcfg : []; - $bucket = isset($uploadcfg['bucket']) ? $uploadcfg['bucket'] : ''; - $savekey = $savekey ? $savekey : (isset($uploadcfg['savekey']) ? $uploadcfg['savekey'] : ''); - $expiration = time() + (isset($uploadcfg['expire']) ? $uploadcfg['expire'] : 0); - $options = [ - 'bucket' => $bucket, - 'save-key' => $savekey, - 'expiration' => $expiration + $uploadcfg = array_merge($uploadcfg, $params); + $uploadcfg['bucket'] = isset($uploadcfg['bucket']) ? $uploadcfg['bucket'] : ''; + $savekey = isset($uploadcfg['savekey']) ? $uploadcfg['savekey'] : ''; + $uploadcfg['save-key'] = isset($uploadcfg['save-key']) ? $uploadcfg['save-key'] : $savekey; + $expiration = time() + (isset($uploadcfg['expire']) ? $uploadcfg['expire'] : 600); + $uploadcfg['expiration'] = isset($uploadcfg['expiration']) ? $uploadcfg['expiration'] : $expiration; + $notifyurl = isset($uploadcfg['notifyurl']) ? $uploadcfg['notifyurl'] : ''; + $returnurl = isset($uploadcfg['returnurl']) ? $uploadcfg['returnurl'] : ''; + if ($notifyurl) + $uploadcfg['notify-url'] = $notifyurl; + else + unset($uploadcfg['notify-url']); + if ($returnurl) + $uploadcfg['return-url'] = $returnurl; + else + unset($uploadcfg['return-url']); + + //设置允许的附加字段 + $allowfields = [ + 'bucket', 'save-key', 'expiration', 'date', 'content-md5', 'notify-url', 'return-url', 'content-secret', 'content-type', 'allow-file-type', 'content-length-range', + 'image-width-range', 'image-height-range', 'x-gmkerl-thumb', 'x-gmkerl-type', 'apps', 'b64encoded', 'ext-param' ]; - $policy = base64_encode(json_encode($options)); + $params = array_intersect_key($uploadcfg, array_flip($allowfields)); + $policy = base64_encode(json_encode($params)); $signature = md5($policy . '&' . (isset($uploadcfg['formkey']) ? $uploadcfg['formkey'] : '')); + $multipart = [ + 'policy' => $policy, + 'signature' => $signature, + ]; + + $multipart = array_merge($multipart, $params); return [ 'cdnurl' => isset($uploadcfg['cdnurl']) ? $uploadcfg['cdnurl'] : '', 'uploadurl' => isset($uploadcfg['uploadurl']) ? $uploadcfg['uploadurl'] : url('ajax/upload'), - 'bucket' => isset($uploadcfg['bucket']) ? $uploadcfg['bucket'] : '', - 'maxsize' => $maxsize ? $maxsize : (isset($uploadcfg['maxsize']) ? $uploadcfg['maxsize'] : ''), - 'mimetype' => $mimetype ? $mimetype : (isset($uploadcfg['mimetype']) ? $uploadcfg['mimetype'] : ''), - 'policy' => $policy, - 'signature' => $signature, + 'bucket' => $uploadcfg['bucket'], + 'maxsize' => isset($uploadcfg['maxsize']) ? $uploadcfg['maxsize'] : '', + 'mimetype' => isset($uploadcfg['mimetype']) ? $uploadcfg['mimetype'] : '', + 'multipart' => $multipart, ]; } -- libgit2 0.24.0