Spring AWS S3:如何上传图片并获取显示图片而不是下载图片的网址?

时间:2015-08-17 18:28:57

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

所以我的问题是,当我打开上传文件的URL时,会下载它。 我做了一些研究和问题,我应该以某种方式向S3指明它是一个图像。 目前这是处理上传的功能,但我不知道如何在那里设置类型。 或者是否有内置功能可识别图像,当URL打开时,它会自动显示它们而不是下载它们?

由于

public void writeResource(byte[] bytes, String fileName) throws IOException
{    
   Resource resource = this.resourceLoader.getResource("s3://bucket/" + fileName);
   WritableResource writableResource = (WritableResource) resource;
   try (OutputStream outputStream = writableResource.getOutputStream())
   {
      outputStream.write(bytes);
   }
}

2 个答案:

答案 0 :(得分:3)

 @Autowired
 private AmazonS3 amazonS3;    

 ObjectMetadata meta = new ObjectMetadata();
                       meta.setContentType(file.getContentType());
                       meta.setContentLength(file.getSize());
                       meta.setHeader("filename", fileName);

 ByteArrayInputStream bis = new ByteArrayInputStream(file.getBytes());

 TransferManager transferManager = new TransferManager(this.amazonS3);
                 transferManager.upload(bucket, filename, bis, meta);

这就是我解决它的方式。希望这能有所帮助。 :)

答案 1 :(得分:0)

据推测,您要将此数据发送回浏览器(?)。如果要将文件的内容发送回浏览器,则需要设置响应的内容类型,以向浏览器指示文件是图像;要执行此操作,您需要将内容类型设置为" image / jpeg"

通过指定内容类型,浏览器然后知道如何处理文件(在这种情况下,在浏览器中呈现图像)。