Configvalue.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace app\common\model;
  3. use think\Model;
  4. use think\Config;
  5. class Configvalue extends Model
  6. {
  7. // 开启自动写入时间戳字段
  8. protected $autoWriteTimestamp = 'int';
  9. // 定义时间戳字段名
  10. protected $createTime = 'createtime';
  11. protected $updateTime = 'updatetime';
  12. // 定义字段类型
  13. protected $type = [
  14. 'content' => 'json',
  15. ];
  16. /**
  17. * 加载上传配置
  18. *
  19. * @param array $params 扩展参数,常用字段savekey,mimetype,maxsize,ext-param,notify-url,return-url<br>
  20. * 更多字段可参考http://docs.upyun.com/api/form_api/#_2
  21. *
  22. * @return array
  23. */
  24. public static function upload($params = [])
  25. {
  26. $uploadcfg = Config::get('upload');
  27. $uploadcfg = $uploadcfg ? $uploadcfg : [];
  28. $uploadcfg = array_merge($uploadcfg, $params);
  29. $uploadcfg['bucket'] = isset($uploadcfg['bucket']) ? $uploadcfg['bucket'] : '';
  30. $multiple = isset($uploadcfg['multiple']) ? $uploadcfg['multiple'] : false;
  31. $savekey = isset($uploadcfg['savekey']) ? $uploadcfg['savekey'] : '';
  32. $uploadcfg['save-key'] = isset($uploadcfg['save-key']) ? $uploadcfg['save-key'] : $savekey;
  33. $expiration = time() + (isset($uploadcfg['expire']) ? $uploadcfg['expire'] : 600);
  34. $uploadcfg['expiration'] = isset($uploadcfg['expiration']) ? $uploadcfg['expiration'] : $expiration;
  35. $notifyurl = isset($uploadcfg['notifyurl']) ? $uploadcfg['notifyurl'] : '';
  36. $returnurl = isset($uploadcfg['returnurl']) ? $uploadcfg['returnurl'] : '';
  37. if ($notifyurl)
  38. $uploadcfg['notify-url'] = $notifyurl;
  39. else
  40. unset($uploadcfg['notify-url']);
  41. if ($returnurl)
  42. $uploadcfg['return-url'] = $returnurl;
  43. else
  44. unset($uploadcfg['return-url']);
  45. //设置允许的附加字段
  46. $allowfields = [
  47. 'bucket', 'save-key', 'expiration', 'date', 'content-md5', 'notify-url', 'return-url', 'content-secret', 'content-type', 'allow-file-type', 'content-length-range',
  48. 'image-width-range', 'image-height-range', 'x-gmkerl-thumb', 'x-gmkerl-type', 'apps', 'b64encoded', 'ext-param'
  49. ];
  50. $params = array_intersect_key($uploadcfg, array_flip($allowfields));
  51. $policy = base64_encode(json_encode($params));
  52. $signature = md5($policy . '&' . (isset($uploadcfg['formkey']) ? $uploadcfg['formkey'] : ''));
  53. $multipart = [
  54. 'policy' => $policy,
  55. 'signature' => $signature,
  56. ];
  57. $multipart = array_merge($multipart, $params);
  58. return [
  59. 'cdnurl' => isset($uploadcfg['cdnurl']) ? $uploadcfg['cdnurl'] : '',
  60. 'uploadurl' => isset($uploadcfg['uploadurl']) ? $uploadcfg['uploadurl'] : url('ajax/upload'),
  61. 'bucket' => $uploadcfg['bucket'],
  62. 'maxsize' => isset($uploadcfg['maxsize']) ? $uploadcfg['maxsize'] : '',
  63. 'mimetype' => isset($uploadcfg['mimetype']) ? $uploadcfg['mimetype'] : '',
  64. 'multipart' => $multipart,
  65. 'multiple' => $multiple,
  66. ];
  67. }
  68. }