国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

SpringBoot實(shí)現(xiàn)上傳文件到AWS S3的代碼

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

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

在 application.xml中添加aws相關(guān)配置:

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

新建一個(gè) AwsS3Componment類來執(zhí)行上傳文件操作:

@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(); }}

因?yàn)槭褂玫姆?wù)有設(shè)置endpoint,所以這里需要使用下面這一行完成endpoint的設(shè)置:

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

如果不設(shè)置endpoint就會收到下面這樣的報(bào)錯(cuò):

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的這行配置中還設(shè)置了region信息。如果不需要設(shè)置endpoint,就得補(bǔ)上region的配置:

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

下面是執(zhí)行上傳的代碼:

/** * 執(zhí)行文件上傳 * * @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實(shí)例執(zhí)行的上傳。有時(shí)候會需要直接通過文件流執(zhí)行上傳,此時(shí)可以使用下面的代碼:

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()最好配置一下。不設(shè)置會在處理的時(shí)候給出WARN。根據(jù)方法文檔也可以看到,如果不設(shè)置,在上傳的時(shí)候就會先在內(nèi)存中緩存整個(gè)信息流來計(jì)算文件長度。

大體上就是這樣了。

End!

以上就是SpringBoot實(shí)現(xiàn)上傳文件到AWS S3的代碼的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot 上傳文件的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 国产福利片在线 易阳 | 国产精品合集一区二区 | 在线免费观看一级毛片 | 精品久久久久久中文字幕 | 玖草在线 | 国产三级日本三级在线播放 | 99久久精品毛片免费播放 | 日韩一区国产二区欧美三区 | 一级毛片aaa | 成年女人免费毛片视频永久 | 视频一二三区 | 亚洲黄色三级网站 | 国产热久久精 | 日韩欧美中文字幕在线视频 | 夜色毛片永久免费 | 一男一女的一级毛片 | 欧美日韩一日韩一线不卡 | 国产黄毛片 | 97视频免费在线 | 成人永久免费视频 | 97视频免费播放观看在线视频 | 国产精品一区在线播放 | 97视频免费播放观看在线视频 | 国产成视频 | 美欧毛片| 国产精品国产三级国产专 | 伊大人香蕉久久网欧美 | 日韩美女网站在线看 | 久艹在线观看视频 | 日本免费网址 | 白嫩美女直冒白浆 | 日本一级高清不卡视频在线 | 亚洲一区二区三区四区在线 | 久久精品中文字幕免费 | 一区二区三区不卡在线 | 日本在线看小视频网址 | 国产亚洲一欧美一区二区三区 | 萌白酱福利视频 | 伊人网在线免费视频 | 久久一日本道色综合久 | 久久国产成人精品 |