<?php

namespace app\api\controller;

use app\common\controller\Api;

/**
 * 上传接口
 */
class Upload extends Api
{
    protected $noNeedLogin = ['uploadToCloud'];
    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' => 1800, // 密钥有效期
            '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);

    }
}
