2

我在我的项目开发中使用以下第三方 API
http://undesign.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 有任何想法或经验,请建议我。谢谢

4

2 回答 2

2

因此,您正在使用:http ://undesign.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 秒)后过期,您可以通过最后一个参数延长过期时间以增加它。

于 2012-06-15T08:22:59.383 回答
0

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

如果您想在没有经过身份验证的情况下访问该文件,那么您必须授予该文件的读取权限。否则,您还可以创建签名的 url。

于 2012-06-13T06:38:41.473 回答