Spring , 图片路径不包含AWS域
Spring , image path does not include AWS domain
我是 Spring 的新手,我正在尝试从 Amazon S3 提供图像,现在我可以上传图像,但是当我尝试通过端点访问它们时,我在路径中看不到 aws 域,在 Django 中,我曾经在序列化程序中传递请求上下文,但我不知道如何在 Spring.
中执行此操作
响应如下所示:enter image description here
我需要图片路径中的域名
要从 Spring 应用程序访问 Amazon S3 存储桶中的图像,您可以使用 适用于 Java V2 的 AWS SDK。例如,假设您想要读取图像并 return 将其作为字节数组传递给另一个 AWS 服务或在浏览器中下载它。
使用 S3Client 对象的 getObjectAsBytes 方法,您可以使用存储桶名称和密钥作为输入来获取图像。
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;
}
另一方面,如果您想获取 Amazon S3 存储桶中某个对象的 URL,您也可以使用 S3Client[=41= 获取此信息] 对象的 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);
}
}
这个 return 的值类似于:
https://bucketxxxxx.s3.amazonaws.com/people.png
要像这样使用 URL 查看对象 - 确保您已将对象设置为由 public 读取 - 否则 URL 不会显示图像。更多信息在这里:
https://aws.amazon.com/premiumsupport/knowledge-center/read-access-objects-s3-bucket/
如果您不知道如何使用适用于 Java V2 的 AWS 开发工具包进行编码,请从这里开始:
我是 Spring 的新手,我正在尝试从 Amazon S3 提供图像,现在我可以上传图像,但是当我尝试通过端点访问它们时,我在路径中看不到 aws 域,在 Django 中,我曾经在序列化程序中传递请求上下文,但我不知道如何在 Spring.
中执行此操作响应如下所示:enter image description here
我需要图片路径中的域名
要从 Spring 应用程序访问 Amazon S3 存储桶中的图像,您可以使用 适用于 Java V2 的 AWS SDK。例如,假设您想要读取图像并 return 将其作为字节数组传递给另一个 AWS 服务或在浏览器中下载它。
使用 S3Client 对象的 getObjectAsBytes 方法,您可以使用存储桶名称和密钥作为输入来获取图像。
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;
}
另一方面,如果您想获取 Amazon S3 存储桶中某个对象的 URL,您也可以使用 S3Client[=41= 获取此信息] 对象的 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);
}
}
这个 return 的值类似于:
https://bucketxxxxx.s3.amazonaws.com/people.png
要像这样使用 URL 查看对象 - 确保您已将对象设置为由 public 读取 - 否则 URL 不会显示图像。更多信息在这里:
https://aws.amazon.com/premiumsupport/knowledge-center/read-access-objects-s3-bucket/
如果您不知道如何使用适用于 Java V2 的 AWS 开发工具包进行编码,请从这里开始: