2013-01-04 83 views
26

由於某些原因,我的S3存儲桶中的文件被強制作爲下載而不是顯示在線,因此如果我複製圖像鏈接並將其粘貼到地址欄並導航到它,它會促進我的瀏覽器下載它。相反,我實際上必須點擊打開的圖像才能訪問網址。AWS S3顯示文件內聯,而不是強制下載

任何方式來改變從S3服務文件的方式

+0

當您複製圖像鏈接時,它會直接指向圖像URL。瀏覽器只是理解執行提供的URL。 –

+0

@SunilGulabani但我看到使用亞馬遜S3的網站,可以直接訪問該文件,而無需強制下載文件。例如,圖像託管站點允許直接訪問圖像。我指的是直接文件路徑這裏是一個例子,這是一個在我的S3存儲桶中託管的文件:https://droplet-files.s3.amazonaws.com/7c32280bbcb1d3e67ac799ce9c71212f.JPG –

+1

我認爲你提供的內容類型將是錯誤的上傳圖片。它需要是圖像/ jpeg。檢查內容類型:http://en.wikipedia.org/wiki/Internet_media_type –

回答

23

您需要更改內容類型。在S3控制檯中,右鍵單擊對象並選擇屬性,然後在元數據下。您也可以通過編程方式執行此操作:http://docs.amazonwebservices.com/AWSSDKforPHP/latest/index.html#m=AmazonS3/change_content_type

+1

我看到,我使用$ s3-> putObjectFile($ tmp,$ bucket,$ actual_image_name ,S3 :: ACL_PUBLIC_READ)之前,但由於某種原因,我記得我使用桶策略 –

+1

@Cl'也可以[在putObject()方法]中設置內容類型(http: //undesigned.org.za/2007/10/22/amazon-s3-php-class/documentation#putObject)(因爲'putObjectFile()'現在是遺留的)。 – mathielo

21
$client->putObject(array(
     'Bucket'  => 'buckname', 
     'Key'  => $destination, 
     'SourceFile' => $source, 
     'ContentType' =>'image/jpeg', //<-- this is what you need! 
     'ACL'   => 'public-read'//<-- this makes it public so people can see it 
    ));