2011-01-20 77 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']