AmazonS3如何在浏览器中使用JavaWeb服务返回图像或文件
我用Java编写了一个web服务GET。我正在传递S3存储桶中存在的对象(图像)的名称。当我在浏览器中运行GET url时,我需要查看来自s3 bucket的图像/文件。但是,我只能返回S3URL。所以这就是我在浏览器中得到的。当我在浏览器中调用Java web服务时,我需要实际显示图像或下载文件,就像在浏览器中点击S3对象Url下载一样。但在我们的例子中,这需要通过JavaWeb服务实现。我该怎么做。下面是我正在尝试的
`@RequestMapping(value ="/getImage", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public URL getImage (String inputfile)
{
AppLogger.info("BlitlineController:createThumbnail:begin");
ObtainSignedUrl s3Url = new ObtainSignedUrl();
URL s3url= s3Url.getSrcSignedUrl(inputfile);
return s3url;
}`
# 1 楼答案
根据浏览器url的可用性,基本上有两种方法
选项1
如果浏览器可以访问S3中图像的url,客户端可以处理重定向,则适用:
尝试发送“重定向”,以便浏览器能够自行理解这是一个重定向(具有特殊响应状态)。UI端将理解这一点(浏览器应该自动完成),并将直接向S3创建http请求
下面是一个这样做的示例:
选项2
当浏览器无法访问s3存储桶时,此选项适用。 你应该用s3 sdk连接AWS,获取图像并发送
总而言之:
我认为你应该更喜欢第一种选择