簡體   English   中英

如何使用PHP將文件從簽名的URL從Amazon S3下載到客戶端計算機?

[英]How do I download a file from a signed URL from Amazon S3 to a client machine using PHP?

當用戶單擊網站上的鏈接時,我正嘗試通過php從具有簽名URL的Amazon S3存儲桶中下載文件。 這是我到目前為止的內容:

$client = S3Client::factory(
    array(
      'key' => 'xyz',
      'secret' => 'abc'
));

$signedUrl = $client->getObjectUrl(<bucket>, $location, '+10 minutes');

現在,如何使用上面簽名的URL將文件下載到客戶端計算機?

假設您僅在獲取url遇到問題並且已正確實現api,這應該可以工作

$client = S3Client::factory(
    array(
      'key' => 'xyz',
      'secret' => 'abc'
));

$signedUrl = $client->getObjectUrl(<bucket>, $location, '+10 minutes');
file_put_contents($fileName, file_get_contents($signedUrl));

現在,這會將文件放在您的服務器上。 為了下載到客戶端,有兩種方法。 讓我嘗試最簡單的方法

header('Content-Type: application/csv'); // Change mime type
header('Content-Disposition: attachment; filename=temp.csv'); // Change filename
header('Pragma: no-cache');
echo (file_get_contents($signedUrl));

這將節省輸出而不是在服務器上將輸出提供給客戶端。 另一種選擇是將URL發送到javascript並從客戶端下載。

暫無
暫無

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

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