我的s3存储桶中的图片无法在浏览器中打开,只会下载

时间:2018-02-19 22:18:18

标签: java spring amazon-web-services amazon-s3

如何在浏览器中打开s3存储桶上的图像?

我已经设置了一个亚马逊s3存储桶来托管我的webapp的图像,我遇到的问题是当我点击图像的链接时,它会下载图像而不是在浏览器中显示它。

  1. 我已将元数据设置为'Content-Type:image / *'
  2. 我已将权限设置为公开
  3. 这是我正在使用的代码:

    private void uploadFileTos3bucket(String fileName, MultipartFile file) 
    { 
        try
            (InputStream is = file.getInputStream()) 
                { ObjectMetadata metadata = new ObjectMetadata(); 
                  metadata.setContentLength(file.getBytes().length); 
                  metadata.setLastModified(new Date()); 
                  metadata.setContentType("image/*"); s3client.putObject(new 
                  PutObjectRequest(bucketName, fileName, is, metadata).withCannedAcl(CannedAccessControlList.PublicRead)); }        
                  catch(IOException e) { e.printStackTrace(); 
                } 
        }
    

    有没有人有任何其他想法或解决方案?

1 个答案:

答案 0 :(得分:2)

将您的contenttype更改为image/png,并认为您在S3中的图片为.png格式。您需要设置S3存储桶中设置的相应内容类型。例如,如果是文本,请将其设置为text/plain。同样,对于图像,请将其设置为image/png。此外,您的文件内容类型不应为binary/octet-stream,否则将无法打开,而是会下载。