?????作者名稱:DaenCode
??作者簡介:啥技術(shù)都喜歡搗鼓搗鼓,喜歡分享技術(shù)、經(jīng)驗、生活。
??人生感悟:嘗盡人生百味,方知世間冷暖。
??所屬專欄:SpringBoot實戰(zhàn)
系列文章目錄
以下是專欄部分內(nèi)容,更多內(nèi)容請前往專欄查看!
標(biāo)題 |
---|
一文帶你學(xué)會使用SpringBoot+Avue實現(xiàn)短信通知功能(含重要文件代碼) |
一張思維導(dǎo)圖帶你學(xué)會Springboot創(chuàng)建全局異常、自定義異常 |
一張思維導(dǎo)圖帶你打通SpringBoot自定義攔截器的思路 |
28個SpringBoot項目中常用注解,日常開發(fā)、求職面試不再懵圈 |
一張思維導(dǎo)圖帶你學(xué)會SpringBoot、Vue前后端分離項目線上部署 |
一張流程圖帶你學(xué)會SpringBoot結(jié)合JWT實現(xiàn)登錄功能 |
一張思維導(dǎo)圖帶你學(xué)會使用SpringBoot中的Schedule定時發(fā)送郵件 |
一張思維導(dǎo)圖帶你學(xué)會使用SpringBoot異步任務(wù)實現(xiàn)下單校驗庫存 |
一張思維導(dǎo)圖帶你學(xué)會SpringBoot使用AOP實現(xiàn)日志管理功能 |
專欄推薦
- 專門為Redis入門打造的專欄,包含Redis基礎(chǔ)知識、基礎(chǔ)命令、五大數(shù)據(jù)類型實戰(zhàn)場景、key刪除策略、內(nèi)存淘汰機制、持久化機制、哨兵模式、主從復(fù)制、分布式鎖等等內(nèi)容。
鏈接>>>>>>>>>
《Redis從頭學(xué)》 - 專門為RabbitMQ入門打造的專欄,持續(xù)更新中。。。。。。。。
鏈接>>>>>>>
《圖解RabbitMQ》
??前言
對于項目中的文件存儲有兩張方案,一種是存儲在項目中,另一種則是采用分布式存儲。第一種解決方案,隨著文件數(shù)量越來越多,對于文件上傳下載的帶寬有影響并且對于以后存儲的擴容有很大的不便性。本文來說一張分布式存儲中的云廠商文件系統(tǒng)解決方案,有關(guān)于阿里云OSS文件上傳的使用。
??介紹
官網(wǎng):https://www.aliyun.com/product/oss?utm_content=se_1014317304
上述是官網(wǎng)地址,沒有用過的,可以申請三個月的體驗期。
它是具有與平臺無關(guān)的Restful api接口。任何應(yīng)用、時間、語言都可以訪問。并且分為多種存儲類型:標(biāo)準(zhǔn)存儲類型、低頻訪問類型、歸檔訪問類型、冷歸檔訪問類型。其存儲類型的數(shù)據(jù)熱度從大到小一次為:標(biāo)準(zhǔn)、低頻、歸檔、冷歸檔。
??準(zhǔn)備
1.創(chuàng)建bucket。這里要注意讀寫權(quán)限選擇公共讀。這里截圖截錯了。
2.創(chuàng)建用戶RAM權(quán)限。注意復(fù)制key,只會出現(xiàn)一次
。
??引入依賴
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.1</version>
</dependency>
如果使用的是Java 9及以上的版本,則需要添加jaxb相關(guān)依賴
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.3</version>
</dependency>
??配置文件
進入實例查看endpoint:
aliyun:
oss:
endpoint: oss-cn-beijing.aliyuncs.com
access-key-id: 你復(fù)制的accessID
access-key-secret: 你復(fù)制的keyScret
bucketname: 你創(chuàng)建的buckert名稱
??配置類
創(chuàng)建OSS配置類,讀取配置文件中的內(nèi)容。
@ConfigurationProperties(prefix = "aliyun.oss")
@Configuration
@Data
public class OssConfig {
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
}
??文件上傳組件-service層
上傳流程:采用multipartFile。
- 讀取OSSConfig配置類中的配置。
- 根據(jù)讀取到的endpoint、accesskeyID、accessScret創(chuàng)建OSS客戶端實例Ossclient。
- 配置實例參數(shù)。
- 獲取上傳的文件名、拓展名;定義上傳后的文件名。
- 拼接路徑
- 返回上傳后的路徑地址。
@Autowired
private OSSConfig ossConfig;
/**
* oss上傳文件
* 1.創(chuàng)建oss客戶端實例
* 2.配置實例參數(shù)
* 3.拼接路徑
* @param file
* @return
*/
@Override
public String uploadFile(MultipartFile file) {
String endPoint=ossConfig.getEndpoint();
String accessKeyId=ossConfig.getAccessKeyId();
String accessKeyScret=ossConfig.getAccessKeySecret();
String bucketName= ossConfig.getBucketName();
//創(chuàng)建ossClient實例
OSS ossClient= new OSSClientBuilder().build(endPoint,accessKeyId,accessKeyScret);
//拼接路徑
String originFileName=file.getOriginalFilename();
DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy/mm/dd");
LocalDateTime localDateTime=LocalDateTime.now();
//根據(jù)日期分類文件夾
String folderName=dtf.format(localDateTime);
//新文件名
String newFileName= CommonUtil.getRandom(4);
//獲取拓展名
String extension=originFileName.substring(originFileName.lastIndexOf("."));
String newFile="user/"+folderName+"/"+newFileName+extension;
//推送
try {
PutObjectResult result = ossClient.putObject(bucketName, newFile, file.getInputStream());
if (result!=null){
return "https://"+endPoint+"."+bucketName+"."+"/"+newFile;
}
} catch (IOException e) {
throw new SelfException(GlobalExceptionEnum.FILE_UPLOAD_ERROR);
}finally {
ossClient.shutdown();
}
return null;
}
??上傳文件接口
/**
* 頭像上傳
* @param file 上傳的文件
* @return
*/
@ApiOperation("頭像上傳")
@PostMapping("upload")
public JsonResult upload(@ApiParam(value = "文件") @RequestPart(value = "file")MultipartFile file){
String path = fileService.uploadFile(file);
if (StringUtils.isBlank(path)){
return JsonResult.exceptionResponse(GlobalExceptionEnum.FILE_UPLOAD_ERROR);
}
return JsonResult.success("上傳成功",path);
}
??寫在最后
有關(guān)于SpringBoot整合阿里云OSS實現(xiàn)文件上傳介紹到此就結(jié)束了。感謝大家的閱讀,希望大家在評論區(qū)對此部分內(nèi)容散發(fā)討論,便于學(xué)到更多的知識。文章來源:http://www.zghlxwxcb.cn/news/detail-714259.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-714259.html
到了這里,關(guān)于SpringBoot整合阿里云OSS文件存儲解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!