2015-10-21 69 views
0

AWS SDK for PHPguide exists for v2用於從S3流式傳輸對象,如圖像。在該指南中,它引用了$command->getResponse()->getHeaders() - getResponse()getHeaders()似乎都不存在於SDK的v3中。使用適用於PHP的AWS開發工具包(v3)檢索流對象的標頭

documentation for the stream wrapper in v3沒有提及檢索標題。我嘗試了使用s3://路徑的原生PHP get_headers(),但返回的結果是false(沒有錯誤)。如果我嘗試get_headers($fullurl),我可以檢索標題。

如何使用AWS SDK for PHP版本3的流路徑s3://爲對象檢索標頭?使用完整的URL將適用於我有私人文件的情況。

運行文檔引用的其他一些本地PHP函數可以正確返回使用s3://路徑的值。可能有一個SDK方法調用頭,我找不到它。

$s3->registerStreamWrapper(); 

$headers = get_headers('s3://my-files/' . $filepath); 
//$headers === false 

$headers = get_headers('http://my-files.s3.amazonaws.com/' . $filepath); 
//$headers correctly retrieves all the headers 

回答

0

一個解決方案似乎並不像最有效的方式,但它的作品 - 它的工作原理關閉的事實,get_headers($fullurl)作品。

由於我們有時需要訪問私人文件,我們可以get a presigned URL,這將給任何用戶的URL訪問權限,並運行get_headers()

$s3getobject = $s3->getCommand('GetObject', [ 
    'Bucket' => 'my-files', 
    'Key' => $filepath 
]); 
$presignedrequest = $s3->createPresignedRequest($s3getobject, '+5 minutes'); 
$s3url = (string) $presignedrequest->getUri(); 
$headers = get_headers($s3url, true); 
相關問題