亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

springboot工程如何使用阿里云OSS傳輸文件

 更新時間:2023年08月09日 14:30:40   作者:想要打 Acm 的小周同學呀  
阿里云對象存儲OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存儲服務,多種存儲類型供選擇,全面優(yōu)化存儲成本,非常適合存儲非結構化數(shù)據(jù),本文給大家介紹springboot工程使用阿里云OSS傳輸文件的操作,感興趣的朋友一起看看吧

OSS對象存儲簡介

對象存儲服務(Object Storage Service,簡稱OSS)

阿里云對象存儲OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存儲服務,提供99.9999999999%(12個9)的數(shù)據(jù)持久性,99.995%的數(shù)據(jù)可用性。多種存儲類型供選擇,全面優(yōu)化存儲成本。非常適合存儲非結構化數(shù)據(jù),例如視頻、圖形、日志、文本文件以及各種App應用、多終端同步軟件、網(wǎng)盤下載站的文件等,單個文件的大小從1字節(jié)到48.8TB,可以存儲的個數(shù)無限制;

springboot工程使用阿里云OSS傳輸文件

在application.yml文件中引入對應的配置,一個是對應的節(jié)點,兩個是密鑰和賬號,還有一個是對應文件的名稱;

采用這樣方式進行解耦,便于后期修改。

然后需要設置一個properties類,去讀對應的配置信息用到了ConfigurationProperties類,對應掃描的是alioss;

編寫對應的工具類

@Data
@AllArgsConstructor
@Slf4j
public class AliOssUtil {
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
/**
* 文件上傳
*
* @param bytes
* @param objectName
* @return
*/
public String upload(byte[] bytes, String objectName) {
// 創(chuàng)建OSSClient實例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// 創(chuàng)建PutObject請求。
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(bytes));
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
//文件訪問路徑規(guī)則 https://BucketName.Endpoint/ObjectName
StringBuilder stringBuilder = new StringBuilder("https://");
stringBuilder
.append(bucketName)
.append(".")
.append(endpoint)
.append("/")
.append(objectName);
log.info("文件上傳到:{}", stringBuilder.toString());
return stringBuilder.toString();
}
}

返回文件存儲的地址

在controller中編寫上傳方法;

@RestController
@RequestMapping("/admin/common")
@Api(tags = "通用接口")
@Slf4j
public class CommonController {
@Autowired
private AliOssUtil aliOssUtil;
/**
* 文件上傳
* @param file
* @return
*/
@PostMapping("/upload")
@ApiOperation("文件上傳")
public Result<String> upload(MultipartFile file){
log.info("文件上傳:{}",file);
try {
//原始文件名
String originalFilename = file.getOriginalFilename();
//截取原始文件名的后綴   dfdfdf.png
String extension = originalFilename.substring(originalFilename.lastIndexOf("."));
//構造新文件名稱
String objectName = UUID.randomUUID().toString() + extension;
//文件的請求路徑
String filePath = aliOssUtil.upload(file.getBytes(), objectName);
return Result.success(filePath);
} catch (IOException e) {
log.error("文件上傳失敗:{}", e);
}
return Result.error(MessageConstant.UPLOAD_FAILED);
}
}

采用的UUID.randomUUID().toString() ,這個是隨機命名,可以防止上傳文件名稱出現(xiàn)重復。

還需要配置對應的Configuration類,初始化阿里云對象,把他交給bean進行管理

*/
@Configuration //配置類
@Slf4j
public class OssConfiguration {
//配置類 用于初始化對象
@Bean
@ConditionalOnMissingBean
public AliOssUtil aliOssUtil(AliOssProperties aliOssProperties){
log.info("開始創(chuàng)建阿里云文件上傳工具類對象:{}",aliOssProperties);
return new AliOssUtil(aliOssProperties.getEndpoint(),
aliOssProperties.getAccessKeyId(),
aliOssProperties.getAccessKeySecret(),
aliOssProperties.getBucketName());
}
}

這邊是因為在Controller中使用了依賴注入,需要將對象交給bean進行管理,編寫對應的Configuration類;

到此這篇關于springboot工程使用阿里云OSS傳輸文件的文章就介紹到這了,更多相關springboot阿里云OSS傳輸文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot整合Shiro和Redis的示例代碼

    SpringBoot整合Shiro和Redis的示例代碼

    這篇文章主要介紹了SpringBoot整合Shiro和Redis的示例代碼,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • Spring RestTemplate使用方法示例總結

    Spring RestTemplate使用方法示例總結

    這篇文章主要介紹了Spring RestTemplate使用方法示例總結,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2025-04-04
  • 淺談Java的WeakHashMap源碼

    淺談Java的WeakHashMap源碼

    這篇文章主要介紹了淺談Java的WeakHashMap源碼,WeakHashMap,從名字可以看出它是某種?Map,它的特殊之處在于?WeakHashMap?里的entry可能會被GC自動刪除,即使程序員沒有調用remove()或者clear()方法,需要的朋友可以參考下
    2023-09-09
  • 關于Springboot的擴展點DisposableBean的原理解析

    關于Springboot的擴展點DisposableBean的原理解析

    這篇文章主要介紹了關于Springboot的擴展點DisposableBean的原理解析,DisposableBean是一個接口,為Spring bean提供了一種釋放資源的方式 ,只有一個擴展方法destroy(),需要的朋友可以參考下
    2023-05-05
  • SpringBoot中屬性賦值操作的實現(xiàn)

    SpringBoot中屬性賦值操作的實現(xiàn)

    這篇文章主要介紹了SpringBoot中屬性賦值操作的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Java多線程中的原子類屬性說明

    Java多線程中的原子類屬性說明

    這篇文章主要介紹了Java多線程中的原子類屬性說明,對多線程訪問同一個變量,我們需要加鎖,而鎖是比較消耗性能的,JDk1.5之后,新增的原子操作類提供了一種用法簡單、性能高效、線程安全地更新一個變量的方式,需要的朋友可以參考下
    2023-10-10
  • Logback日志基礎及自定義配置代碼實例

    Logback日志基礎及自定義配置代碼實例

    這篇文章主要介紹了Logback日志基礎及自定義配置代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • 各種格式的編碼解碼工具類分享(hex解碼 base64編碼)

    各種格式的編碼解碼工具類分享(hex解碼 base64編碼)

    這篇文章主要介紹了各種格式的編碼解碼工具類,集成Commons-Codec、Commons-Lang及JDK提供的編解碼方法
    2014-01-01
  • Kotlin 基礎教程之泛型

    Kotlin 基礎教程之泛型

    這篇文章主要介紹了Kotlin 基礎教程之泛型的相關資料,需要的朋友可以參考下
    2017-06-06
  • IDEA中的clean,清除項目緩存圖文教程

    IDEA中的clean,清除項目緩存圖文教程

    這篇文章主要介紹了IDEA中的clean,清除項目緩存圖文教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09

最新評論