我是 Spring 新手,我正在嘗試從 Amazon S3 提供影像,現在我可以上傳影像,但是當我嘗試通過端點訪問它們時,我看不到 aws 域path ,在 Django 中,我曾經在序列化程式中傳遞 reqeuest 背景關系,但我不知道如何在 Spring 中執行此操作。
回應如下所示:在此處輸入影像描述
我需要影像路徑中的域
uj5u.com熱心網友回復:
要從 Spring 應用程式訪問 Amazon S3 存盤桶中的影像,您可以使用AWS SDK for Java V2。例如,假設您要讀取影像并將其作為位元組陣列回傳以傳遞給另一個 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物件的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 查看物件 - 確保您已將物件設定為由公共讀取 - 否則 URL 不會顯示影像。更多資訊在這里:
https://aws.amazon.com/premiumsupport/knowledge-center/read-access-objects-s3-bucket/
如果您不知道如何使用適用于 Java V2 的 AWS 開發工具包進行編碼,請從這里開始:
開始使用適用于 Java 2.x 的 AWS 開發工具包
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/415854.html
標籤:
