大家好 , 我是小富~
技术交流,公众号:程序员小富又是做好人好事的一天,有个小可爱私下问我有没有好用的
springboot
文件上传工具,这不巧了嘛,正好我私藏了一个好东西,顺便给小伙伴们也分享一下,demo地址放在文末了 。文章插图
文件上传在平常不过的一个功能,做后端开发的基本都会接触到 , 虽然不难可着实有点繁琐 。数据流的开闭、读取还容易出错,尤其是在对接一些
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中通过极简的方式就可以实现文件存储 。文章插图
简单配置下边以本地和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
:缩略图后缀
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路径 。文章插图
文章插图
不仅如此
spring-file-storage
还支持多种文件形式,URI
、URL
、String
、byte[]
、InputStream
、MultipartFile
,使开发更加灵活 。
推荐阅读
- SpringBoot内置工具类,告别瞎写工具类了
- 【高并发】深度解析ScheduledThreadPoolExecutor类的源代码
- 之四 2流高手速成记:SpringBoot整合redis及mongodb
- Springboot JSON 转换:Jackson篇
- SpringBoot整合ES+Kibana
- 前端图形:SVG与Canvas
- SpringBoot框架SpEL表达式注入漏洞复现与原理分析
- Typora设置代码块Mac风格三个圆点
- 手写自定义springboot-starter,感受框架的魅力和原理
- 一 JPA入门学习集合springboot