在我的项目开发中使用以下第三方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有任何想法或经验,请建议我。感谢
答案 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)
是否所有文件都具有所有用户读取权限(公共可访问)?
如果您想要在没有经过身份验证的方式下访问该文件,则必须为该文件提供读取权限。否则你也可以创建签名网址。