2012-06-12 28 views
1

我在我的项目开发中使用下面的第三方API
http://undesigned.org.za/2007/10/22/amazon-s3-php-class如何在AmazonS3中创建对象的下载链接?

我做喜欢上传的所有任务,删除,斗列表,对象列表这个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

所以你正在使用: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小时(3600sec 。),您可以通过最后一个参数来延长到期时间以增加它。

+0

我已经更新了我的S3类 - '链接:http:// amazon- s3-php-class.googlecode.com/files/s3-php5-curl_0.4.0.tar.gz' – Frank

+0

感谢您的支持,它的完成。 – Frank

0

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

如果你想访问该文件没有经过身份验证的方式,那么你必须给该文件的读取权限。否则你也可以创建签名的URL。

+0

没错 '承授人:弗兰克 打开/下载:是 查看权限:是 编辑权限:Yes' – Frank

+0

然后告诉我别的什么 – Frank