|
@@ -0,0 +1,56 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace app\api\controller;
|
|
|
+
|
|
|
+use app\common\controller\Api;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 上传接口
|
|
|
+ */
|
|
|
+class Upload extends Api
|
|
|
+{
|
|
|
+ protected $noNeedLogin = [''];
|
|
|
+ protected $noNeedRight = ['*'];
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 上传文件到腾讯cos获取临时密钥
|
|
|
+ */
|
|
|
+ public function uploadToCloud() {
|
|
|
+ require_once VENDOR_PATH . 'qcloud/src/Sts.php';
|
|
|
+ require_once VENDOR_PATH . 'qcloud/src/Scope.php';
|
|
|
+ $sts = new \Sts();
|
|
|
+
|
|
|
+ $cos_config = get_addon_config('cos');
|
|
|
+
|
|
|
+ $config = array(
|
|
|
+ 'url' => 'https://sts.tencentcloudapi.com/',
|
|
|
+ 'domain' => 'sts.tencentcloudapi.com',
|
|
|
+ 'proxy' => '',
|
|
|
+ 'secretId' => $cos_config['secretId'], // 固定密钥
|
|
|
+ 'secretKey' => $cos_config['secretKey'], // 固定密钥
|
|
|
+ 'bucket' => $cos_config['bucket'], // 换成你的 bucket
|
|
|
+ 'region' => $cos_config['region'], // 换成 bucket 所在园区
|
|
|
+ 'durationSeconds' => $cos_config['expire'], // 密钥有效期
|
|
|
+ 'allowPrefix' => '*', // 这里改成允许的路径前缀,可以根据自己网站的用户登录态判断允许上传的具体路径,例子: a.jpg 或者 a/* 或者 * (使用通配符*存在重大安全风险, 请谨慎评估使用)
|
|
|
+ // 密钥的权限列表。简单上传和分片需要以下的权限,其他权限列表请看 https://cloud.tencent.com/document/product/436/31923
|
|
|
+ 'allowActions' => array (
|
|
|
+ // 简单上传
|
|
|
+ 'name/cos:PutObject',
|
|
|
+ 'name/cos:PostObject',
|
|
|
+ // 分片上传
|
|
|
+ 'name/cos:InitiateMultipartUpload',
|
|
|
+ 'name/cos:ListMultipartUploads',
|
|
|
+ 'name/cos:ListParts',
|
|
|
+ 'name/cos:UploadPart',
|
|
|
+ 'name/cos:CompleteMultipartUpload',
|
|
|
+ // 下载
|
|
|
+ 'name/cos:GetObject'
|
|
|
+ )
|
|
|
+ );
|
|
|
+
|
|
|
+ // 获取临时密钥,计算签名
|
|
|
+ $tempKeys = $sts->getTempKeys($config);
|
|
|
+ $this->success("获取成功!",$tempKeys);
|
|
|
+
|
|
|
+ }
|
|
|
+}
|