【问题标题】:How to access Amazon s3 private bucket object through Zend_Service_Amazon_S3如何通过 Zend_Service_Amazon_S3 访问 Amazon s3 私有存储桶对象
【发布时间】:2012-01-10 07:19:41
【问题描述】:

我在 amazon s3 上创建了一个存储桶,并将一些图像保存在这个存储桶中的一个文件夹中。所有图像都是私有的,我使用 Zend 的 Zend_Service_Amazon_S3 类。

请告诉我如何访问私人图像。

谢谢, 普拉文

【问题讨论】:

  • 您是要尝试将图像文件内容下载到 php 变量中,还是要生成可以访问图像的一次性访问令牌?
  • 您好,我想访问它并显示在网页上。
  • 通过您的代码,即您的脚本从图像中获取二进制内容,然后将图像内容回显到浏览器,如果是这样,那么使用亚马逊作为与您自己的服务器不同的存储的好处在哪里。或者通过某种访问令牌,如果是这样,您是否考虑过客户端可能正在缓存 html 而不是图像,并且可能会在一段时间后发现您的页面因图像 URL 不再有效而损坏?
  • 好的,但是你能给我一个如何访问私有对象并使用 Zend_Service_Amazon_S3 类显示它的代码。

标签: service amazon zend-framework


【解决方案1】:

您可以通过像这样制作私人网址来完成此任务

public function get_s3_signed_url($bucket, $resource, $AWS_S3_KEY, $AWS_s3_secret_key, $expire_seconds) {
     $expires = time()+$expire_seconds;
     // S3 Signed URL creation
     $string_to_sign = "GET\n\n\n{$expires}\n/".str_replace(".s3.amazonAWS.com","", $bucket)."/$resource";
     $signature = urlencode(base64_encode((hash_hmac("sha1", utf8_encode($string_to_sign), $AWS_s3_secret_key, TRUE))));

     $authentication_params = "AWSAccessKeyId=".$AWS_S3_KEY;
     $authentication_params.= "&Expires={$expires}";
     $authentication_params.= "&Signature={$signature}";
     return $link = "http://s3.amazonAWS.com/{$bucket}/{$resource}?{$authentication_params}";
}

现在使用此网址获取访问权限。

【讨论】:

【解决方案2】:

试试这个: 它将返回存储在 Amazon S3 存储桶中的文件的二进制数据。

require_once 'Zend/Service/Amazon/S3.php';
$s3 = new Zend_Service_Amazon_S3($my_aws_key, $my_aws_secret_key);
echo $s3->getObject("my-own-bucket/myobject");

文档在这里:http://framework.zend.com/manual/de/zend.service.amazon.s3.html
这是示例 #1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-23
    • 2020-10-17
    • 2019-01-25
    • 2017-03-19
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 2020-01-14
    相关资源
    最近更新 更多