1.获取阿里云签名
public function AliSign($params,$accessSecret){
ksort($params);
$tmp = "";
foreach ($params as $key => $val) {
$tmp .= '&' . $this->percentEncode($key) . '=' . $this->percentEncode($val);
}
$tmp = trim($tmp,'&');
//echo $tmp;die;
$stringToSign = 'GET&%2F&'.$this->percentEncode($tmp);
$hmac = hash_hmac("sha1", $stringToSign,$accessSecret.'&', true);
return base64_encode($hmac);
}
public function percentEncode($value = null)
{
$en = urlencode($value);
$en = str_replace("+", "%20", $en);
$en = str_replace("*", "%2A", $en);
$en = str_replace("%7E", "~", $en);
return $en;
}
2.进行分割处理
public function Ali($imgurl){
$AccessKeyId = "";
$secret = "";
$SignatureMethod = "HMAC-SHA1";
$RegionId = "cn-shanghai";
$Format = "JSON";
$SignatureVersion ="1.0";
$Version = "2019-12-30";
$Action = "SegmentBody";
$time = date('Y-m-d\TH:i:s\Z', time() - date('Z'));
$rand = uniqid().rand(1,9999999);
$imgurl = $imgurl;
$params = [
'SignatureMethod'=>$SignatureMethod,
'SignatureNonce'=>$rand,
'AccessKeyId'=>$AccessKeyId,
'SignatureVersion'=>$SignatureVersion,
'Timestamp'=>$time,
'Format'=>$Format,
'RegionId'=>$RegionId,
'Version'=>$Version,
'Action'=>$Action,
'ImageURL'=>$imgurl,
];
$params['Signature'] = $this->AliSign($params, $secret);
$uri = http_build_query($params);
var_dump($uri);die;
$url = 'http://imageseg.cn-shanghai.aliyuncs.com/?'.$uri;
echo $url;die;
}