Spring,镜像路径不包括AWS域



我是Spring的新手,我正在尝试从Amazon S3提供图像,现在我可以上传图像,但当我尝试通过端点访问它们时,我在路径中看不到aws域,在Django中,我曾经在序列化程序中传递request上下文,但我不知道如何在Spring中做到这一点。

响应如下:在此处输入图像描述

我需要图像中的域路径

要从Spring应用程序访问Amazon S3存储桶中的图像,可以使用AWS SDK for Java V2。例如,假设您想读取图像并将其作为字节数组返回,以传递给另一个AWS服务或在浏览器中下载。

使用S3Client对象的getObjectAsBytes方法,可以使用bucket名称和键作为输入来获取图像。

public byte[] getObjectBytes (String bucketName, String keyName) {
s3 = getClient();
try {
GetObjectRequest objectRequest = GetObjectRequest
.builder()
.key(keyName)
.bucket(bucketName)
.build();
ResponseBytes<GetObjectResponse> objectBytes = s3.getObjectAsBytes(objectRequest);
byte[] data = objectBytes.asByteArray();
return data;
} catch (S3Exception e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
return null;
}

另一方面,如果您想获取AmazonS3存储桶中对象的URL,您也可以使用S3Client对象的S3.utilities((.getUrl方法来获取此信息。

示例:

public static void getURL(S3Client s3, String bucketName, String keyName ) {
try {
GetUrlRequest request = GetUrlRequest.builder()
.bucket(bucketName)
.key(keyName)
.build();
URL url = s3.utilities().getUrl(request);
System.out.println("The URL for  "+keyName +" is "+url.toString());
} catch (S3Exception e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
}

这会返回一个值,如:

https://bucketxxxxx.s3.amazonaws.com/people.png

要使用这样的URL查看对象,请确保已将对象设置为由public读取,否则URL不会显示图像。更多信息:

https://aws.amazon.com/premiumsupport/knowledge-center/read-access-objects-s3-bucket/

如果您不知道如何使用AWS SDK for Java V2进行编码,请从这里开始:

开始使用AWS SDK for Java 2.x

最新更新