Springboot 一行代碼實現文件上傳 20個平臺!少寫代碼到極致

大家好 , 我是小富~

技術交流,公眾號:程序員小富
又是做好人好事的一天,有個小可愛私下問我有沒有好用的springboot文件上傳工具,這不巧了嘛,正好我私藏了一個好東西,順便給小伙伴們也分享一下,demo地址放在文末了 。
Springboot 一行代碼實現文件上傳 20個平臺!少寫代碼到極致

文章插圖
文件上傳在平常不過的一個功能,做后端開發的基本都會接觸到 , 雖然不難可著實有點繁瑣 。數據流的開閉、讀取還容易出錯,尤其是在對接一些OSS對象存儲平臺,一個平臺一堆SDK代碼看起來亂糟糟的 。
下邊給我大家推薦一個工具Spring File Storage,上傳文件只要些許配置一行代碼搞定,開發效率杠杠的,一起看看是不是有這么流批!
官網:https://spring-file-storage.xuyanwu.cn
Spring File Storage工具幾乎整合了市面上所有的OSS對象存儲平臺,包括本地、FTP、SFTP、WebDAV、阿里云OSS華為云OBS、七牛云Kodo騰訊云COS、百度云 BOS、又拍云USS、MinIO、京東云 OSS網易數帆 NOS等其它兼容 S3 協議的平臺,只要在springboot中通過極簡的方式就可以實現文件存儲 。
Springboot 一行代碼實現文件上傳 20個平臺!少寫代碼到極致

文章插圖
簡單配置下邊以本地和Aliyun OSS上傳為例,pom.xml中引入必要的spring-file-storage.jar,注意: 如果要上傳文件到OSS平臺,需要引入對應平臺的SDK包 。
<!-- spring-file-storage 必須要引入 --><dependency><groupId>cn.xuyanwu</groupId><artifactId>spring-file-storage</artifactId><version>0.5.0</version></dependency><!-- 阿里云oss --><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version></dependency>application.yml文件中配置些基礎信息 。
  • enable-storage:只有狀態開啟才會被識別到
  • default-platform:默認的上傳平臺
  • domain:生成的文件url中訪問的域名
  • base-path:存儲地址
  • thumbnail-suffix:縮略圖后綴
要是上傳OSS對象存儲平臺,將aliyun oss提供的變量配置到相應的模塊上即可 。
spring:#文件存儲配置(本地、oss)file-storage:default-platform: local-1thumbnail-suffix: ".min.jpg" #縮略圖后綴local:- platform: local-1 # 存儲平臺標識enable-storage: true #是否開啟本存儲(只能選一種)enable-access: true #啟用訪問(線上請使用 Nginx 配置,效率更高)domain: "http://127.0.0.1:2222" #訪問域名,注意后面要和path-patterns保持一致,“/”結尾base-path: /tmp/Pictures/ # 存儲地址path-patterns: /** #訪問路徑aliyun-oss:- platform: aliyun-ossenable-storage: trueaccess-key: xxxxsecret-key: xxxxend-point: xxxbucket-name: firebookdomain: http://fire100.topbase-path: #云平臺文件路徑springboot啟動類中增加注解@EnableFileStorage,顯式的開啟文件上傳功能 , 到這就可以用了
@EnableFileStorage // 文件上傳工具@SpringBootApplicationpublic class SpringbootFileStorageApplication {public static void main(String[] args) {SpringApplication.run(SpringbootFileStorageApplication.class, args);}}上傳文件接下來在業務類中引入FileStorageService服務,如下只要一行代碼就可以完成文件上傳,是不是So easy,下載也是如法炮制 。
@RestControllerpublic class FileController {@Autowiredprivate FileStorageService fileStorageService;/*** 公眾號:程序員小富* 上傳文件*/@PostMapping(value = https://www.huyubaike.com/biancheng/{"/upload"})public Object upload(MultipartFile file) {FileInfo upload= fileStorageService.of(file).upload();return upload;}}我們用postman測試上傳一張圖片 , 看到圖片已經成功傳到了/tmp/Pictures目錄下,返回結果中包含了完整的訪問文件的URL路徑 。
Springboot 一行代碼實現文件上傳 20個平臺!少寫代碼到極致

文章插圖

Springboot 一行代碼實現文件上傳 20個平臺!少寫代碼到極致

文章插圖
不僅如此spring-file-storage還支持多種文件形式,URI、URL、Stringbyte[]、InputStream、MultipartFile,使開發更加靈活 。

推薦閱讀