Springboot集成阿里云OSS上傳文件系統(tǒng)教程
第一步:開通阿里云OSS服務(wù),創(chuàng)建Bucket,獲取id和密鑰
第二步:根據(jù)官方文檔編寫上傳代碼
1.新建maven項(xiàng)目
添加依賴:
<!-- 阿里云oss依賴 --> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> </dependency> <!-- 日期工具欄依賴 --> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> </dependency>
2.配置application.properties
#服務(wù)端口 server.port=8002 #服務(wù)名 spring.application.name=service-oss #環(huán)境設(shè)置:dev、test、prod spring.profiles.active=dev #阿里云 OSS #不同的服務(wù)器,地址不同 需要根據(jù)自己的信息填寫 aliyun.oss.file.endpoint=your endpoint aliyun.oss.file.keyid=your accessKeyId aliyun.oss.file.keysecret=your accessKeySecret #bucket可以在控制臺創(chuàng)建,也可以使用java代碼創(chuàng)建 aliyun.oss.file.bucketname=guli-file
3、創(chuàng)建啟動類
創(chuàng)建OssApplication.java
package com.sun.oss; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @ComponentScan({"com.sun"}) public class OssApplication { public static void main(String[] args) { SpringApplication.run(OssApplication.class, args); } }
啟動報(bào)錯(cuò):
多模塊應(yīng)用時(shí),該模塊沒有使用數(shù)據(jù)庫,配置文件中沒有數(shù)據(jù)庫配置信息,則會報(bào)錯(cuò)
第一種方法:
在配置類中添加數(shù)據(jù)庫配置信息:
# mysql數(shù)據(jù)庫連接 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/musicdb?serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=123456
第二種方法:添加注解,在@SpringBootApplication注解上加上exclude,解除自動加載DataSourceAutoConfiguration
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
4.編寫一個(gè)工具類:
用于讀取配置文件密鑰信息
ConstantPropertiesUtils.java
//當(dāng)項(xiàng)目已啟動,spring接口,spring加載之后,執(zhí)行接口一個(gè)方法 @Component public class ConstantPropertiesUtils implements InitializingBean { //讀取配置文件內(nèi)容 @Value("${aliyun.oss.file.endpoint}") private String endpoint; @Value("${aliyun.oss.file.keyid}") private String keyId; @Value("${aliyun.oss.file.keysecret}") private String keySecret; @Value("${aliyun.oss.file.bucketname}") private String bucketName; //定義公開靜態(tài)常量 public static String END_POIND; public static String ACCESS_KEY_ID; public static String ACCESS_KEY_SECRET; public static String BUCKET_NAME; @Override public void afterPropertiesSet() throws Exception { END_POIND = endpoint; ACCESS_KEY_ID = keyId; ACCESS_KEY_SECRET = keySecret; BUCKET_NAME = bucketName; } }
5.編寫controller類
@Api(description = "頭像上傳到oss") @RestController @RequestMapping("/eduoss/fileoss") @CrossOrigin//解決跨域問題 public class OssController { @Autowired private OssService ossService; //上傳頭像的方法 @ApiOperation("上傳頭像") @PostMapping public R uploadOssFile(MultipartFile file) { //獲取上傳文件 MultipartFile //返回上傳到oss的路徑 String url = ossService.uploadFileAvatar(file); return R.ok().data("url",url); } }
6.編寫service類
@Service public class OssServiceImpl implements OssService { //上傳頭像 @Override public String uploadFileAvatar(MultipartFile file) { //工具類獲取值 String endPoind = ConstantPropertiesUtils.END_POIND; String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID; String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET; String bucketName = ConstantPropertiesUtils.BUCKET_NAME; try { //創(chuàng)建Oss實(shí)例 OSS ossClient = new OSSClientBuilder().build(endPoind, accessKeyId, accessKeySecret); //獲取上傳文件輸入流 InputStream inputStream = file.getInputStream(); //獲取文件名稱 String filename = file.getOriginalFilename(); //1.防止上傳文件名重復(fù),使用UUid String uuid = UUID.randomUUID().toString().replaceAll("-", ""); //拼接fileName filename=uuid+filename; //2.把文件按照日期分類 //獲取當(dāng)前日期,需要引入org.joda.time依賴 String datePath = new DateTime().toString("yyyy/MM/dd"); //拼接 filename=datePath+"/"+filename; //調(diào)用oss方法實(shí)現(xiàn)上傳 //第一個(gè)參數(shù) Bucket名稱 //第二個(gè)參數(shù) 上傳到oss的文件路徑和文件名 //第三個(gè)參數(shù) 上傳文件輸入流 ossClient.putObject(bucketName,filename,inputStream); //關(guān)閉OssClient ossClient.shutdown(); //上傳之后把文件路勁返回 //需要把上傳到oss路徑手動拼接出來 //https://edu-975.oss-cn-beijing.aliyuncs.com/07aef13af7ea82703f3eb320c3f577ec.jpg String url="https://"+bucketName+"."+endPoind+"/"+filename; return url; }catch (Exception e){ e.printStackTrace(); return null; } } }
解決上傳文件大?。?/span>
# 單個(gè)文件大小 spring.servlet.multipart.max-request-size=10MB # 單次最大文件 spring.servlet.multipart.max-file-size=3MB
swagger測試運(yùn)行:
成功!!
到此這篇關(guān)于Springboot集成阿里云OSS上傳文件系統(tǒng)教程的文章就介紹到這了,更多相關(guān)Springboot集成阿里云oss文件上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
@JsonFormat處理LocalDateTime失效的問題
這篇文章主要介紹了關(guān)于@JsonFormat處理LocalDateTime失效的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08Java使用itextpdf實(shí)現(xiàn)生成PDF并添加圖片,水印和文字
這篇文章主要為大家詳細(xì)介紹了Java在使用itextpdf實(shí)現(xiàn)生成PDF時(shí)如何實(shí)現(xiàn)添加圖片,水印和文字等效果,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02Spring中利用SchedulingConfigurer實(shí)現(xiàn)動態(tài)定時(shí)任務(wù)配置的示例
定時(shí)任務(wù)是一項(xiàng)至關(guān)重要的功能,它們使得我們能夠按照預(yù)定的時(shí)間執(zhí)行特定的任務(wù),本文主要介紹了Spring中利用SchedulingConfigurer實(shí)現(xiàn)動態(tài)定時(shí)任務(wù)配置的示例,感興趣的可以了解一下2024-05-05IDEA進(jìn)程已結(jié)束,退出代碼-1073741819 (0xC0000005)的bug
這篇文章主要介紹了IDEA進(jìn)程已結(jié)束,退出代碼-1073741819 (0xC0000005)的bug,本文通過實(shí)例代碼圖文的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04