Upload.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. /**
  5. * 上传接口
  6. */
  7. class Upload extends Api
  8. {
  9. protected $noNeedLogin = [''];
  10. protected $noNeedRight = ['*'];
  11. /**
  12. * 上传文件到腾讯cos获取临时密钥
  13. */
  14. public function uploadToCloud() {
  15. require_once VENDOR_PATH . 'qcloud/src/Sts.php';
  16. require_once VENDOR_PATH . 'qcloud/src/Scope.php';
  17. $sts = new \Sts();
  18. $config = array(
  19. 'url' => 'https://sts.tencentcloudapi.com/',
  20. 'domain' => 'sts.tencentcloudapi.com',
  21. 'proxy' => '',
  22. 'secretId' => config("cos")["secretId"], // 固定密钥
  23. 'secretKey' => config("cos")["secretKey"], // 固定密钥
  24. 'bucket' => config("cos")["bucket"], // 换成你的 bucket
  25. 'region' => config("cos")["region"], // 换成 bucket 所在园区
  26. 'durationSeconds' => config("cos")["durationSeconds"], // 密钥有效期
  27. 'allowPrefix' => config("cos")["allowPrefix"], // 这里改成允许的路径前缀,可以根据自己网站的用户登录态判断允许上传的具体路径,例子: a.jpg 或者 a/* 或者 * (使用通配符*存在重大安全风险, 请谨慎评估使用)
  28. // 密钥的权限列表。简单上传和分片需要以下的权限,其他权限列表请看 https://cloud.tencent.com/document/product/436/31923
  29. 'allowActions' => array (
  30. // 简单上传
  31. 'name/cos:PutObject',
  32. 'name/cos:PostObject',
  33. // 分片上传
  34. 'name/cos:InitiateMultipartUpload',
  35. 'name/cos:ListMultipartUploads',
  36. 'name/cos:ListParts',
  37. 'name/cos:UploadPart',
  38. 'name/cos:CompleteMultipartUpload',
  39. // 下载
  40. 'name/cos:GetObject'
  41. )
  42. );
  43. // 获取临时密钥,计算签名
  44. $tempKeys = $sts->getTempKeys($config);
  45. $this->success("获取成功!",$tempKeys);
  46. }
  47. }