2011-01-20 114 views
16

這讓我很生氣。我使用php SDK將圖像上傳到S3。無論何時瀏覽圖片網址,瀏覽器都會下載與顯示圖片相反的圖片。亞馬遜S3 - 圖像下載而不是顯示在瀏覽器中

我認爲它與內容類型有關。

 // Prepare to upload the file to S3 bucket. 
     $s3->create_object($bucket, $file_name, array(
       'contentType' => 'binary/octet-stream', 
       'acl' => AmazonS3::ACL_PUBLIC 
     )); 

你能幫忙嗎?

謝謝

+0

你能張貼的圖片URL的樣本? – MrEyes 2011-01-20 19:09:09

+0

也許嘗試將內容類型更改爲'image/jpg'(假設當然是jpg)? http://www.w3schools.com/media/media_mimeref.asp – horatio 2011-01-20 19:11:55

回答

15
  $s3->create_object($bucket, $file_name, array(
        'fileUpload' => $resized_image, 
        'contentType' => $_FILES['image']['type'], 
        'acl' => AmazonS3::ACL_PUBLIC 
      )); 
13

您的內容類型的確是錯誤的。例如,它需要用於JPG的圖像/ jpeg。請參閱本網站的列表: http://en.wikipedia.org/wiki/Internet_media_type

+0

$ s3-> create_object($ bucket,$ file_name,array( 'fileUpload'=> $ resized_image, 'contentType'=> $ _FILES ['image '] ['type'], 'acl'=> AmazonS3 :: ACL_PUBLIC )); – drs 2011-01-21 14:39:09

2

你自己,看似有效,假設工作,它是內容類型:

您需要爲圖像設置正確的內容類型爲上傳,下面的列表包含所有最常見的類型

* image/gif: GIF image 
* image/jpeg: JPEG JFIF image 
* image/png: Portable Network Graphics 
* image/svg+xml: SVG vector image 
* image/tiff: Tag Image File Format 
* image/vnd.microsoft.icon: ICO image 

所以你的示例代碼爲PNG上傳返工:

// Prepare to upload the file to S3 bucket. 
$s3->create_object($bucket, $file_name, array(
      'contentType' => 'image/png', 
      'acl' => AmazonS3::ACL_PUBLIC 
)); 
+0

將內容類型更改爲image/jpg並仍然獲得下載對話框 – drs 2011-01-20 19:37:34

2

如果您正在URL圖像使用

'ContentType' => mime_content_type($absolutePathToImage), 

,而不是

$_FILES['image']['type']