Java SpringAWSS3:如何上传图像并获得显示图像的URL,而不是下载图像?

Java SpringAWSS3:如何上传图像并获得显示图像的URL,而不是下载图像?,java,spring,amazon-web-services,amazon-s3,spring-cloud,Java,Spring,Amazon Web Services,Amazon S3,Spring Cloud,所以我的问题是,当我打开上传文件的URL时,它会下载它。 我做了一些研究,问题是我应该以某种方式向S3指定它是一个图像。 目前,这是处理上传的函数,但我不知道如何在那里设置类型。 或者是否有一个内置的功能来识别图像,当URL打开时,它会自动显示图像,而不是下载图像 谢谢 public void writeResource(byte[] bytes, String fileName) throws IOException { Resource resource = this.reso

所以我的问题是,当我打开上传文件的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);
   }
}

您可能正在将此数据发送回浏览器(?)。如果要将文件内容发送回浏览器,则需要设置响应的内容类型,以向浏览器指示文件是图像;为此,您需要将内容类型设置为“image/jpeg”

通过指定内容类型,浏览器便知道如何处理文件(在本例中,是在浏览器中渲染图像)


我就是这样解决的。希望这对别人有帮助。:)

没错,这就是我需要做的,但我不知道怎么做。如何以编程方式设置?根据问题中截取的代码很难回答这个问题。该代码从何处运行?在一个典型的基于servlet的web应用程序中,您将写入响应对象,而不是像现在这样写入输出流。写入响应对象时,可以设置内容类型。例如:
 @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);