2

プロジェクト開発で以下のサードパーティ API を使用しています
http://undesigned.org.za/2007/10/22/amazon-s3-php-class

この API を使用して、アップロード、削除、バケット リスト、オブジェクト リストなどのすべてのタスクを実行しましたが、バケットからオブジェクト ダウンロード リンクを作成する主要なタスクの 1 つが曖昧です。

公式の Amazon 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: //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 秒) 後に期限切れになります。最後のパラメーターで有効期限を延長して、それをインクリメントすることができます。

于 2012-06-15T08:22:59.383 に答える
0

すべてのファイルにすべてのユーザー読み取り権限がありますか(パブリックアクセス可能)?

認証された方法なしでそのファイルにアクセスしたい場合は、そのファイルに読み取り権限を与える必要があります。それ以外の場合は、署名付きURLを作成することもできます。

于 2012-06-13T06:38:41.473 に答える