function UCloud_MakePrivateUrl($bucket, $key, $expires = 0) { $err = CheckConfig(ActionType::GETFILE); if ($err != null) { return array(null, $err); } global $UCLOUD_PUBLIC_KEY; $public_url = UCloud_MakePublicUrl($bucket, $key); $req = new HTTP_Request('GET', array('path' => $public_url), null, $bucket, $key); if ($expires > 0) { $req->Header['Expires'] = $expires; } $client = new UCloud_AuthHttpClient(null); $temp = $client->Auth->SignRequest($req, null, QUERY_STRING_CHECK); $signature = substr($temp, -28, 28); $url = $public_url . "?UCloudPublicKey=" . $UCLOUD_PUBLIC_KEY . "&Signature=" . $signature; if ('' != $expires) { $url .= "&Expires=" . $expires; } return $url; }
function curl_file_get_contents($durl) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $durl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 获取数据返回 curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回 $r = curl_exec($ch); curl_close($ch); return $r; } /* * 访问公有Bucket的例子 */ $url = UCloud_MakePublicUrl($bucket, $key); echo "download url(public): ", $url . "\n"; /* * 访问私有Bucket的例子 */ $url = UCloud_MakePrivateUrl($bucket, $key); echo "download url(private): ", $url . "\n"; /* * 访问包含过期时间的私有Bucket例子 */ $curtime = time(); $curtime += 60; // 有效期60秒 $url = UCloud_MakePrivateUrl($bucket, $key, $curtime); $content = curl_file_get_contents($url); echo "download file with expires: ", $url . "\n";