簡體   English   中英

AWS S3 PHP SDK 2 SignatureDoesNotMatch錯誤

[英]aws s3 php sdk 2 SignatureDoesNotMatch Error

我在ap-southeast-1區域中創建了一個存儲桶,並將ACL設置為private-read。 我可以使用AWS PHP SDK 2 S3Client類將文件成功上傳到存儲桶中的文件夾。 但是,我還需要在應用程序中顯示這些文件的鏈接。 因此,當用戶單擊一個按鈕時,我向我的服務器文件發送了一個AJAX請求,並獲得了signedURL,該URL通過json字符串返回給用戶。 但是,URL始終返回帶有錯誤SignatureDoesNotMatch的XML。

下面獲取簽名URL的代碼:

 //create the AWS reference string
    $client = S3Client::factory(
                             array(
                                'key'    => T_AWS_KEY,
                                'secret' => T_AWS_SECRET,
                                'region' => T_BASE_REGION
                                )
                             );
    //method 1  - using Command Object

    $command = $client->getCommand('GetObject', array(
        'Bucket' => T_BASE_BUCKET . "/" . $firmId . "/invoices" ,
        'Key' => $arr['file_reference_url'] ,
        'ResponseContentDisposition' => 'attachment;filename=' . arr['file_reference_url']
    ));

    $signedUrl = $command->createPresignedUrl('+10 minutes');
    echo $signedUrl . "\n\n";

    //method 2 - using getObjectUrl
    echo $client->getObjectUrl(T_BASE_BUCKET . "/" . $firmId .  "/invoices", $arr['file_reference_url'], "+10 minutes");

任何幫助表示贊賞。

似乎您對什么是水桶感到困惑。 桶不嵌套。 T_BASE_BUCKET的值可能是您的存儲桶,而其他部分則是對象鍵的一部分。 試一下:

$objectKey = $firmId . '/invoices/' . $arr['file_reference_url'];
echo $client->getObjectUrl(T_BASE_BUCKET, $objectKey, '+10 minutes');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM