概要
OSS の SDK は、署名、アップロード、ダウンロードの機能を提供します。場合によっては、署名を使用してコンテンツをアップロードおよびダウンロードするために、API を使用する場合があります。本トピックでは、PutObject API を使用して署名付きアップロードを実行する PHP サンプルを紹介します。
説明
可能な限り OSS SDK を使用してください。このトピックのコードは、あくまで署名付きアップロードのサンプルです。ビジネス要件に合わせてコードを修正する必要があります。
詳細
次のサンプルコードでは、PHP 5.6.30 で PutObject API を使用する方法を説明します。
<?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