云服务器代理商-凯铧互联

腾讯云 cos 对象存储(Cloud Object Storage) 简单项目实例[获取所有水桶]

$appId = '';		
$secretId = '';
$secretKey = '';
$region = '';
$bucket = '';
/**
* php 签名样例
* @param string $method 请求类型 method
* @param string $filename 文件名称
* @return string 签名字符串
*/
function getAuthorization($secretid, $secretkey, $method, $filename)
{
  // 获取个人 API 密钥 https://console.qcloud.com/capi
  $SecretId = $secretid;
  $SecretKey = $secretkey;
  // 整理参数
  $queryParams = array();
  $headers = array();
  $method = strtolower($method ? $method : 'head');
  $filename = $filename ? $filename : '/';
  substr($filename, 0, 1) != '/' && ($filename = '/' . $filename);
  // 工具方法
  function getObjectKeys($obj)
  {
      $list = array_keys($obj);
      sort($list);
      return $list;
  }
  function obj2str($obj)
  {
     $list = array();
     $keyList = getObjectKeys($obj);
     $len = count($keyList);
     for ($i = 0; $i < $len; $i++) {
     $key = $keyList[$i];
     $val = isset($obj[$key]) ? $obj[$key] : '';
     $key = strtolower($key);
     $list[] = rawurlencode($key) . '=' . rawurlencode($val);
  }
     return implode('&', $list);
}
  // 要用到的 Authorization 参数列表
  $qSignAlgorithm = 'sha1';
  $qAk = $SecretId;
  $qSignTime = (string)(time() - 60) . ';' . (string)(time() + 3600);
  $qKeyTime = $qSignTime;
  $qHeaderList = strtolower(implode(';', getObjectKeys($headers)));
  $qUrlParamList = strtolower(implode(';', getObjectKeys($queryParams)));
  // 签名算法说明文档:https://www.qcloud.com/document/product/436/7778
  // 步骤一:计算 SignKey
  $signKey = hash_hmac("sha1", $qKeyTime, $SecretKey);
  // 步骤二:构成 FormatString
  $formatString = implode("\n", array(strtolower($method), $filename, obj2str($queryParams), obj2str($headers), ''));
  // 步骤三:计算 StringToSign
  $stringToSign = implode("\n", array('sha1', $qSignTime, sha1($formatString), ''));
  // 步骤四:计算 Signature
 $qSignature = hash_hmac('sha1', $stringToSign, $signKey);
 // 步骤五:构造 Authorization
 $authorization = implode('&', array(
 'q-sign-algorithm=' . $qSignAlgorithm,
 'q-ak=' . $qAk,
 'q-sign-time=' . $qSignTime,
 'q-key-time=' . $qKeyTime,
 'q-header-list=' . $qHeaderList,
 'q-url-param-list=' . $qUrlParamList,
 'q-signature=' . $qSignature
));
  return $authorization;
}
$method = 'GET';
$cosPath = '/';
$sign = getAuthorization($secretId, $secretKey, $method, $cosPath); //签名
$url= 'http://1-125158447.cos.ap-chengdu.myqcloud.com'; //接收xml数据的文件
$header = [
'Content-Type: multipart/form-data',
'Authorization: ' . $sign,
];
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);//https请求 不验证证书和hosts
curl_setopt($ch, CURLOPT_POST, false);
//curl_setopt($ch,CURLOPT_POSTFIELDS, $xmlData);
$response = curl_exec($ch);
if(curl_errno($ch))
{
  print curl_error($ch);
}
curl_close($ch);
$xml = simplexml_load_string($response);
echo "<h3>接收</h3>";
echo '<pre>';
var_dump($xml);
赞(0) 打赏
未经允许不得转载:云服务器代理商-凯铧互联 » 腾讯云 cos 对象存储(Cloud Object Storage) 简单项目实例[获取所有水桶]

评论 抢沙发

评论前必须登录!

 

凯铧互联专注云计算

联系我们了解更多

觉得文章有用就打赏一下文章作者

微信扫一扫打赏