Springboot集成阿裡雲OSS上傳文件系統教程
第一步:開通阿裡雲OSS服務,創建Bucket,獲取id和密鑰
第二步:根據官方文檔編寫上傳代碼
1.新建maven項目
添加依賴:
<!-- 阿裡雲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
#服務端口 server.port=8002 #服務名 spring.application.name=service-oss #環境設置:dev、test、prod spring.profiles.active=dev #阿裡雲 OSS #不同的服務器,地址不同 需要根據自己的信息填寫 aliyun.oss.file.endpoint=your endpoint aliyun.oss.file.keyid=your accessKeyId aliyun.oss.file.keysecret=your accessKeySecret #bucket可以在控制臺創建,也可以使用java代碼創建 aliyun.oss.file.bucketname=guli-file
3、創建啟動類
創建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); } }
啟動報錯:
多模塊應用時,該模塊沒有使用數據庫,配置文件中沒有數據庫配置信息,則會報錯
第一種方法:
在配置類中添加數據庫配置信息:
# mysql數據庫連接 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.編寫一個工具類:
用於讀取配置文件密鑰信息
ConstantPropertiesUtils.java
//當項目已啟動,spring接口,spring加載之後,執行接口一個方法 @Component public class ConstantPropertiesUtils implements InitializingBean { //讀取配置文件內容 @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; //定義公開靜態常量 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 { //創建Oss實例 OSS ossClient = new OSSClientBuilder().build(endPoind, accessKeyId, accessKeySecret); //獲取上傳文件輸入流 InputStream inputStream = file.getInputStream(); //獲取文件名稱 String filename = file.getOriginalFilename(); //1.防止上傳文件名重復,使用UUid String uuid = UUID.randomUUID().toString().replaceAll("-", ""); //拼接fileName filename=uuid+filename; //2.把文件按照日期分類 //獲取當前日期,需要引入org.joda.time依賴 String datePath = new DateTime().toString("yyyy/MM/dd"); //拼接 filename=datePath+"/"+filename; //調用oss方法實現上傳 //第一個參數 Bucket名稱 //第二個參數 上傳到oss的文件路徑和文件名 //第三個參數 上傳文件輸入流 ossClient.putObject(bucketName,filename,inputStream); //關閉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; } } }
解決上傳文件大小:
# 單個文件大小 spring.servlet.multipart.max-request-size=10MB # 單次最大文件 spring.servlet.multipart.max-file-size=3MB
swagger測試運行:
成功!!
到此這篇關於Springboot集成阿裡雲OSS上傳文件系統教程的文章就介紹到這瞭,更多相關Springboot集成阿裡雲oss文件上傳內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 解決springcloud阿裡雲OSS文件訪問跨域問題的實現
- php 文件上傳至OSS及刪除遠程阿裡雲OSS文件
- SpringBoot使用Minio進行文件存儲的實現
- WebUploader實現圖片上傳功能
- Spring Boot如何移除內嵌Tomcat,使用非web方式啟動