概述
對象存儲OSS SDK提供了集成簽名、上傳和下載的SDK,但實際使用中,有時需要使用API的方式實現在簽名的情況下進行上傳和下載。本文以PutObject接口為例,提供了PHP語言實現的示例。
說明
建議優先使用OSS提供SDK,本文提供的只是簽名實現上傳示例,實際使用中需要結合業務進行代碼改動。
詳細信息
PHP 5.6.30版本使用PutObject接口實現示例代碼如下。
<?php
function curlput($url,$data,$method='PUT',$bucket,$object,$accesskey ,$accesskeySecret){
$time = gmdate ("D, d M Y H:i:s T");
$str = "PUT\n\n"."application/json\n".$time."\n/".$bucket."/".$object;
//echo($str);
$signature = base64_encode(hash_hmac("sha1", $str, $accesskeySecret, true));
//echo($time);
//echo($signature);
$ch = curl_init(); //初始化CURL句柄
curl_setopt($ch, CURLOPT_URL, $url); //設置請求的URL
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); //設置請求方式
$headers = array(
"Date:".$time,
'Content-Type:application/json',
"Authorization:OSS ".$accesskey.":".$signature
);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);//設置HTTP頭信息
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//設置提交的字符串
$document = curl_exec($ch);//執行預定義的CURL
if(!curl_errno($ch)){
$info = curl_getinfo($ch);
echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'];
} else {
echo 'Curl error: ' . curl_error($ch);
}
curl_close($ch);
return $document;
}
$accesskey ='xxx';
$accesskeySecret ='xxx';
$bucket = 'bucketname';
$object = 'mytest/2.txt';
$url = 'http://bucketname.oss-cn-hangzhou.aliyuncs.com/mytest/2.txt';
$data = "{wewwe:wewee}";
$return = curlput($url, $data, 'PUT',$bucket,$object,$accesskey,$accesskeySecret);
var_dump($return);
exit;
?>
相關文檔
適用于
對象存儲OSS
文檔內容是否對您有幫助?