Springboot 一行代码实现文件上传 20个平台!少写代码到极致

大家好 , 我是小富~

技术交流,公众号:程序员小富
又是做好人好事的一天,有个小可爱私下问我有没有好用的springboot文件上传工具,这不巧了嘛,正好我私藏了一个好东西,顺便给小伙伴们也分享一下,demo地址放在文末了 。
Springboot 一行代码实现文件上传 20个平台!少写代码到极致

文章插图
文件上传在平常不过的一个功能,做后端开发的基本都会接触到 , 虽然不难可着实有点繁琐 。数据流的开闭、读取还容易出错,尤其是在对接一些OSS对象存储平台,一个平台一堆SDK代码看起来乱糟糟的 。
下边给我大家推荐一个工具Spring File Storage,上传文件只要些许配置一行代码搞定,开发效率杠杠的,一起看看是不是有这么流批!
官网:https://spring-file-storage.xuyanwu.cn
Spring File Storage工具几乎整合了市面上所有的OSS对象存储平台,包括本地FTPSFTPWebDAV阿里云OSS华为云OBS七牛云Kodo腾讯云COS百度云 BOS又拍云USSMinIO京东云 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还支持多种文件形式,URIURLStringbyte[]InputStreamMultipartFile,使开发更加灵活 。

推荐阅读