版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
详细解答可以参考官方帮助文档
您可以将生成的签名URL提供给访客进行临时访问。生成签名URL时,您可以指定URL的过期时间,来限制访客的访问时长。授权访问的完整代码请参见GitHub。
以下代码用于生成下载的签名URL:
<?phpif (is_file(__DIR__ . '/../autoload.php')) {require_once __DIR__ . '/../autoload.php';}if (is_file(__DIR__ . '/../vendor/autoload.php')) {require_once __DIR__ . '/../vendor/autoload.php';}use OSS\OssClient;use OSS\Core\OssException;use OSS\Http\RequestCore;use OSS\Http\ResponseCore;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$bucket= "<yourBucketName>";$object = "<yourObjectName>";$securityToken = "<yourSecurityToken>";// 设置URL的有效期为3600秒。$timeout = 3600;try {$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, $securityToken);// 生成GetObject的签名URL。$signedUrl = $ossClient->signUrl($bucket, $object, $timeout);} catch (OssException $e) {printf(__FUNCTION__ . ": FAILED\n");printf($e->getMessage() . "\n");return;}print(__FUNCTION__ . ": signedUrl: " . $signedUrl . "\n");// 可以使用代码来访问签名的URL,也可以输入到浏览器中进行访问。$request = new RequestCore($signedUrl);// 生成的URL默认以GET方式访问。$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");};
以下代码用于生成上传的签名URL:
<?phpif (is_file(__DIR__ . '/../autoload.php')) {require_once __DIR__ . '/../autoload.php';}if (is_file(__DIR__ . '/../vendor/autoload.php')) {require_once __DIR__ . '/../vendor/autoload.php';}use OSS\OssClient;use OSS\Core\OssException;use OSS\Http\RequestCore;use OSS\Http\ResponseCore;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$bucket= "<yourBucketName>";$object = "<yourObjectName>";$securityToken = "<yourSecurityToken>";$timeout = 3600;try {$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, $securityToken);// 生成PutObject的签名URL。$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 = "Hello OSS.";$request = new RequestCore($signedUrl);// 生成的URL以PUT方式访问。$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");};
您可以通过STS(Security Token Service)进行临时授权访问。更多有关STS的内容请参见访问控制API参考(STS)中的简介。关于账号及授权的详细信息请参见最佳实践中的STS临时授权访问。
以下代码用于使用STS临时授权上传文件:
<?phpif (is_file(__DIR__ . '/../autoload.php')) {require_once __DIR__ . '/../autoload.php';}if (is_file(__DIR__ . '/../vendor/autoload.php')) {require_once __DIR__ . '/../vendor/autoload.php';}use OSS\OssClient;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$bucket= "<yourBucketName>";$object = "<yourObjectName>";$securityToken = "<yourSecurityToken>";$content = "Hi, OSS.";try {$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, $securityToken);$ossClient->putObject($bucket, $object, $content);} catch (OssException $e) {print $e->getMessage();}