2012-06-12 31 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