如何在AmazonS3中创建对象的下载链接?

时间:2012-06-12 07:40:10

标签: amazon-s3 amazon-web-services amazon

在我的项目开发中使用以下第三方API http://undesigned.org.za/2007/10/22/amazon-s3-php-class

我已经使用此API完成了上传,删除,存储桶列表,对象列表等所有任务, 但是从桶中创建对象下载链接的主要任务之一就是模糊不清。

官方亚马逊API有: get_object_url ( $bucket, $filename, $preauth, $opt )
获取任何对象的URL,但上面的API缺少方法和文档。

当我点击下载链接时,它显示以下错误:

代码

<h1>All uploaded files</h1>
<?php
    // Get the contents of our bucket
    $contents = $s3->getBucket("mybucket");
    foreach ($contents as $file){

        $fname = $file['name'];
        $furl = "http://mybucket.s3.amazonaws.com/".$fname;

        //output a link to the file
        echo "<a href=\"$furl\">$fname</a><br />";
    }
?>

错误

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
 <Code>AccessDenied</Code>
 <Message>Access Denied</Message>
 <RequestId>5A23C56B55611736</RequestId>
 <HostId>m2V2NlI19zgGPq0o4lXmIfod2BeQZIkuH4Yu651372cE/hfa9BkLdV8y3LlYjtw1</HostId>
</Error>

如果有人对此API有任何想法或经验,请建议我。感谢

2 个答案:

答案 0 :(得分:2)

所以你正在使用:http://undesigned.org.za/2007/10/22/amazon-s3-php-class S3类,并希望从桶中创建一个对象的下载链接

你应该试试这个:

$s3 = new S3($aws_access_key, $aws_secret_key);

$url = $s3->getAuthenticatedURL($aws_bucket_name, $file_name, 3600));

echo "<a href='$url' target='_blank'>Download</a>";

此下载链接将在1小时(3600秒)后过期,您可以通过最后一个参数延长过期时间来增加它。

答案 1 :(得分:0)

是否所有文件都具有所有用户读取权限(公共可访问)?

如果您想要在没有经过身份验证的方式下访问该文件,则必须为该文件提供读取权限。否则你也可以创建签名网址。