最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年10月27日 09:14:47   作者:白42  
這篇文章主要介紹了SpringBoot實現(xiàn)上傳文件到AWS S3的代碼,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下

簡單記錄一下在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

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

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

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

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

如果不設(shè)置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的這行配置中還設(shè)置了region信息。如果不需要設(shè)置endpoint,就得補上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實例執(zhí)行的上傳。有時候會需要直接通過文件流執(zhí)行上傳,此時可以使用下面的代碼:

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

大體上就是這樣了。

End!

以上就是SpringBoot實現(xiàn)上傳文件到AWS S3的代碼的詳細內(nèi)容,更多關(guān)于SpringBoot 上傳文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • slf4j?jcl?jul?log4j1?log4j2?logback各組件系統(tǒng)日志切換

    slf4j?jcl?jul?log4j1?log4j2?logback各組件系統(tǒng)日志切換

    這篇文章主要介紹了slf4j、jcl、jul、log4j1、log4j2、logback的大總結(jié),各個組件的jar包以及目前系統(tǒng)日志需要切換實現(xiàn)方式的方法,有需要的朋友可以借鑒參考下
    2022-03-03
  • java算法入門之有效的括號刪除有序數(shù)組中的重復(fù)項實現(xiàn)strStr

    java算法入門之有效的括號刪除有序數(shù)組中的重復(fù)項實現(xiàn)strStr

    大家好,我是哪吒,一個熱愛編碼的Java工程師,本著"欲速則不達,欲達則欲速"的學(xué)習(xí)態(tài)度,在程序猿這條不歸路上不斷成長,所謂成長,不過是用時間慢慢擦亮你的眼睛,少時看重的,年長后卻視若鴻毛,少時看輕的,年長后卻視若泰山,成長之路,亦是漸漸放下執(zhí)念,內(nèi)心歸于平靜的旅程
    2021-08-08
  • list集合去除重復(fù)對象的實現(xiàn)

    list集合去除重復(fù)對象的實現(xiàn)

    下面小編就為大家?guī)硪黄猯ist集合去除重復(fù)對象的實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • JPA如何使用entityManager執(zhí)行SQL并指定返回類型

    JPA如何使用entityManager執(zhí)行SQL并指定返回類型

    這篇文章主要介紹了JPA使用entityManager執(zhí)行SQL并指定返回類型的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java中歸并排序和Master公式詳解

    java中歸并排序和Master公式詳解

    大家好,本篇文章主要講的是java中歸并排序和Master公式詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Java中內(nèi)存區(qū)域的劃分與異常詳解

    Java中內(nèi)存區(qū)域的劃分與異常詳解

    最近在看java虛擬相關(guān)知識,把每天看到的一些內(nèi)容做一個歸納總結(jié),下面這篇文章主要給大家介紹了關(guān)于Java中內(nèi)存區(qū)域的劃分與異常的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧
    2018-06-06
  • Java中JSON字符串進行各種轉(zhuǎn)換的方法小結(jié)

    Java中JSON字符串進行各種轉(zhuǎn)換的方法小結(jié)

    Gson和Hutool的JSONUtil都是常用的用于處理JSON數(shù)據(jù)的工具庫,它們提供了簡單易用的API來進行JSON字符串的解析、轉(zhuǎn)換和操作,下面就跟隨小編一起學(xué)習(xí)一下如果使用他們實現(xiàn)JSON字符串的各種轉(zhuǎn)換吧
    2024-01-01
  • 關(guān)于Spring?Cloud實現(xiàn)日志管理模塊

    關(guān)于Spring?Cloud實現(xiàn)日志管理模塊

    這篇文章主要介紹了關(guān)于Spring?Cloud實現(xiàn)日志管理模塊問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • java解析XML幾種方式小結(jié)

    java解析XML幾種方式小結(jié)

    本文給大家匯總了4種java解析XML的方法,結(jié)合具體的示例,非常的詳細,有需要的小伙伴可以參考下
    2016-01-01
  • Spring啟動時實現(xiàn)初始化的幾種方案

    Spring啟動時實現(xiàn)初始化的幾種方案

    這篇文章主要介紹了Spring啟動時實現(xiàn)初始化的幾種方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評論

抚松县| 饶河县| 韶山市| 正安县| 滨州市| 嘉鱼县| 扎囊县| 通道| 同江市| 焦作市| 台前县| 五华县| 江阴市| 白银市| 曲水县| 运城市| 禹州市| 昌宁县| 通辽市| 敖汉旗| 平和县| 金堂县| 彰化县| 吉安市| 乡城县| 兴海县| 德保县| 噶尔县| 万荣县| 清丰县| 浏阳市| 江永县| 缙云县| 县级市| 阜新市| 宁国市| 松桃| 白水县| 永和县| 四平市| 葫芦岛市|