av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

SpringBoot實現上傳文件到AWS S3的代碼

瀏覽:3日期:2023-04-13 17:32:38

簡單記錄一下在Springboot中上傳文件到AWS S3存儲服務的代碼。

在 application.xml中添加aws相關配置:

custom: aws: access-key: CHOBITACCESSKEY secret-key: CHOBIT/THISIS006SECRET007Key/dotORG bucket: zhyea endpoint: www.zhyea.com:80

新建一個 AwsS3Componment類來執行上傳文件操作:

@Componentpublic class AwsS3Component implements InitializingBean { @Value('${custom.aws.access-key}') private String accessKey; @Value('${custom.aws.secret-key}') private String accessSecret; @Value('${custom.aws.bucket}') private String bucket; @Value('${custom.aws.endpoint}') private String endpoint; private AmazonS3 client; @Override public void afterPropertiesSet() {ClientConfiguration config = new ClientConfiguration();config.setProtocol(Protocol.HTTP);config.disableSocketProxy(); this.client = AmazonS3ClientBuilder.standard().withClientConfiguration(config).withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, accessSecret))).withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint, Regions.CN_NORTH_1.getName())).enablePathStyleAccess().build(); }}

因為使用的服務有設置endpoint,所以這里需要使用下面這一行完成endpoint的設置:

withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint, Regions.CN_NORTH_1.getName()))

如果不設置endpoint就會收到下面這樣的報錯:

com.amazonaws.services.s3.model.AmazonS3Exception: The AWS Access Key Id you provided does not exist in our records. (Service: Amazon S3; Status Code: 403; Error Code: InvalidAccessKeyId; Request ID: FRDT8N0RAQFNCVDP; S3 Extended Request ID: DemEatwroXry2YN/5lyuMKDmhIi/aIz3QZPmLN0DYHeHU3oGUeOClJBcToz1J1qkcBZBfklRNs8=)at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1660)at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1324)at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1074)at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:745)at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:719)at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:701)

異常信息中提示了AccessKey無效——雖然我的AccessKey是有效的。

在endpoint的這行配置中還設置了region信息。如果不需要設置endpoint,就得補上region的配置:

this.client = AmazonS3ClientBuilder.standard().withClientConfiguration(config).withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, accessSecret))).withRegion(Regions.CN_NORTH_1) //Region配置.enablePathStyleAccess().build();

下面是執行上傳的代碼:

/** * 執行文件上傳 * * @param file 要上傳的文件的路徑 * @param key 存儲文件的路徑 * @return 文件路徑 */private String upload(File file, String key) { client.putObject(new PutObjectRequest(bucket, key, file).withCannedAcl(CannedAccessControlList.PublicRead)); GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(bucket, key); URL url = client.generatePresignedUrl(urlRequest); return url.toString();}

這里是通過 File實例執行的上傳。有時候會需要直接通過文件流執行上傳,此時可以使用下面的代碼:

private String upload(InputStream input, String key) throws IOException { Date expireDate = new Date(System.currentTimeMillis() + TimeUnit.DAYS.toMillis(30)); ObjectMetadata metadata = new ObjectMetadata(); metadata.setHttpExpiresDate(expireDate); metadata.setContentLength(input.available()); client.putObject(new PutObjectRequest(bucket, key, input, metadata).withCannedAcl(CannedAccessControlList.PublicRead)); GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(bucket, key); URL url = client.generatePresignedUrl(urlRequest); return url.toString();}

注意這里的 setContentLength()最好配置一下。不設置會在處理的時候給出WARN。根據方法文檔也可以看到,如果不設置,在上傳的時候就會先在內存中緩存整個信息流來計算文件長度。

大體上就是這樣了。

End!

以上就是SpringBoot實現上傳文件到AWS S3的代碼的詳細內容,更多關于SpringBoot 上傳文件的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
主站蜘蛛池模板: www.男人的天堂 | 欧美日韩精品一区 | 在线观看av的网站 | 久久久www| 久久艹国产 | 欧美激情亚洲 | 亚洲精品自拍视频 | 亚洲视频免费在线观看 | 日韩精品极品 | 黄色片中文字幕 | 色综合久久久久 | 国产不卡视频 | 伊人久久网站 | 视频一区二区在线播放 | 亚洲三级小说 | 国产小视频在线播放 | 久久久二区 | 精品久久影院 | 国产欧美精品 | 国产一区二区网站 | 日韩黄色在线视频 | 免费黄网站在线观看 | 亚洲成人黄色 | 日本a级大片 | 久久91 | 在线色综合 | 色噜噜狠狠一区二区三区 | av在线天堂网 | 狠狠干免费视频 | 黄色一级大片在线免费看国产一 | 青青草国产在线视频 | 成年人在线观看 | 日韩亚洲欧美在线 | 天堂av在线播放 | 爱爱免费小视频 | 免费在线观看黄色片 | 日韩三级大片 | 成人免费网站黄 | 日韩国产欧美 | 在线观看日韩av | 国产97视频 |