| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | <?phpnamespace Upload\Lib\View;use Dever;Dever::apply('sdk/oss', 'upload');Dever::apply('vendor/autoload', 'alibaba');use OSS\OssClient;use OSS\Core\OssException;use AlibabaCloud\Client\AlibabaCloud;use AlibabaCloud\Client\Exception\ClientException;use AlibabaCloud\Client\Exception\ServerException;class Oss{    public function token($config, $upload)    {        $region = 'cn-' . $config['region_id'];        if (!$config['role_arn']) {            return array('oss', '||' . $config['appkey'] . '||' . $config['appsecret'], $region, $upload['bucket']);        }        $cur = time();                if (!$config['token'] || ($config['token_endtime'] && $cur > $config['token_endtime'])) {            AlibabaCloud::accessKeyClient($config['appkey'], $config['appsecret'])->regionId($region)->asDefaultClient();            //设置参数,发起请求。            try {                $result = AlibabaCloud::rpc()                ->product('Sts')                ->scheme('https') // https | http                ->version('2015-04-01')                ->action('AssumeRole')                ->method('POST')                ->host('sts.aliyuncs.com')                ->options([                    'query' => [                      'RegionId' => $region,                      'RoleArn' => "acs:ram::1118875946432366:role/api",                      'RoleArn' => $config['role_arn'],                      'RoleSessionName' => "upload",                    ],                ])                ->request();                $data = $result->toArray();                if (isset($data['Credentials']['SecurityToken'])) {                    $token = $data['Credentials']['SecurityToken'];                    $endtime = $data['Credentials']['Expiration'];                    $appkey = $data['Credentials']['AccessKeyId'];                    $appsecret = $data['Credentials']['AccessKeySecret'];                    $token = $token . '||' . $appkey . '||' . $appsecret;                    $up['token'] = $token;                    $up['token_endtime'] = Dever::maketime($endtime) - 60;                    $up['where_id'] = $config['id'];                    Dever::db('upload/yun')->update($up);                } else {                    echo 'oss token获取失败,请检查配置';die;                }            } catch (ClientException $e) {                echo $e->getErrorMessage() . PHP_EOL;die;            } catch (ServerException $e) {                echo $e->getErrorMessage() . PHP_EOL;die;            }        } else {            $token = $config['token'];        }                return array('oss', $token, $region, $upload['bucket']);    }    public function callback()  	{  		$body = file_get_contents('php://input');  		Dever::log($body, 'oss_callback');  		$body = json_decode($body, true);  		return $body;  	}	# 视频转码    public function convert($key, $file, $config, $upload)    {            }}
 |