| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 | <?phprequire_once __DIR__ . '/Common.php';use OSS\Http\RequestCore;use OSS\Http\ResponseCore;use OSS\OssClient;use OSS\Core\OssException;$bucket = Common::getBucketName();$ossClient = Common::getOssClient();if (is_null($ossClient)) exit(1);//******************************* Simple Usage ***************************************************************$ossClient->uploadFile($bucket, "a.file", __FILE__);// Generate a signed url for getting an object. The URL can be used in browser directly to download the file.$signedUrl = $ossClient->signUrl($bucket, "a.file", 3600);Common::println($signedUrl);// Generate the signed url for putting an object. User can use put method with this url to upload a file to "a.file".$signedUrl = $ossClient->signUrl($bucket, "a.file", "3600", "PUT");Common::println($signedUrl);// Generate the signed url for putting an object from local file. The url can be used directly to upload the file to "a.file".$signedUrl = $ossClient->signUrl($bucket, "a.file", 3600, "PUT", array('Content-Type' => 'txt'));Common::println($signedUrl);//******************************* For complete usage, see the following functions ****************************************************getSignedUrlForPuttingObject($ossClient, $bucket);getSignedUrlForPuttingObjectFromFile($ossClient, $bucket);getSignedUrlForGettingObject($ossClient, $bucket);/** * Generate the signed url for getObject() to control read accesses under private privilege * * @param $ossClient OssClient OssClient instance * @param $bucket string bucket name * @return null */function getSignedUrlForGettingObject($ossClient, $bucket){    $object = "test/test-signature-test-upload-and-download.txt";    $timeout = 3600;    try {        $signedUrl = $ossClient->signUrl($bucket, $object, $timeout);    } catch (OssException $e) {        printf(__FUNCTION__ . ": FAILED\n");        printf($e->getMessage() . "\n");        return;    }    print(__FUNCTION__ . ": signedUrl: " . $signedUrl . "\n");    /**     * Use similar code to access the object by url, or use browser to access the object.     */    $request = new RequestCore($signedUrl);    $request->set_method('GET');    $request->add_header('Content-Type', '');    $request->send_request();    $res = new ResponseCore($request->get_response_header(), $request->get_response_body(), $request->get_response_code());    if ($res->isOK()) {        print(__FUNCTION__ . ": OK" . "\n");    } else {        print(__FUNCTION__ . ": FAILED" . "\n");    };}/** * Generate the signed url for PutObject to control write accesses under private privilege. * * @param OssClient $ossClient OssClient instance * @param string $bucket bucket name * @return null * @throws OssException */function getSignedUrlForPuttingObject($ossClient, $bucket){    $object = "test/test-signature-test-upload-and-download.txt";    $timeout = 3600;    $options = NULL;    try {        $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT");    } catch (OssException $e) {        printf(__FUNCTION__ . ": FAILED\n");        printf($e->getMessage() . "\n");        return;    }    print(__FUNCTION__ . ": signedUrl: " . $signedUrl . "\n");    $content = file_get_contents(__FILE__);    $request = new RequestCore($signedUrl);    $request->set_method('PUT');    $request->add_header('Content-Type', '');    $request->add_header('Content-Length', strlen($content));    $request->set_body($content);    $request->send_request();    $res = new ResponseCore($request->get_response_header(),        $request->get_response_body(), $request->get_response_code());    if ($res->isOK()) {        print(__FUNCTION__ . ": OK" . "\n");    } else {        print(__FUNCTION__ . ": FAILED" . "\n");    };}/** * Generate the signed url for PutObject's signed url. User could use the signed url to upload file directly. * * @param OssClient $ossClient OssClient instance * @param string $bucket bucket name * @throws OssException */function getSignedUrlForPuttingObjectFromFile($ossClient, $bucket){    $file = __FILE__;    $object = "test/test-signature-test-upload-and-download.txt";    $timeout = 3600;    $options = array('Content-Type' => 'txt');    try {        $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT", $options);    } catch (OssException $e) {        printf(__FUNCTION__ . ": FAILED\n");        printf($e->getMessage() . "\n");        return;    }    print(__FUNCTION__ . ": signedUrl: " . $signedUrl . "\n");    $request = new RequestCore($signedUrl);    $request->set_method('PUT');    $request->add_header('Content-Type', 'txt');    $request->set_read_file($file);    $request->set_read_stream_size(filesize($file));    $request->send_request();    $res = new ResponseCore($request->get_response_header(),        $request->get_response_body(), $request->get_response_code());    if ($res->isOK()) {        print(__FUNCTION__ . ": OK" . "\n");    } else {        print(__FUNCTION__ . ": FAILED" . "\n");    };}
 |