type
status
date
slug
summary
password
tags
category
icon
SpringBoot文件上传工具类
Spring File Storage工具几乎整合了市面上所有的OSS对象存储平台,包括本地、FTP、SFTP、WebDAV、阿里云OSS、华为云OBS、七牛云Kodo、腾讯云COS、百度云 BOS、又拍云USS、MinIO、京东云 OSS、网易数帆 NOS等其它兼容 S3 协议的平台,只要在springboot中通过极简的方式就可以实现文件存储。
1、简单配置
下边以本地和Aliyun OSS上传为例,pom.xml中引入必要的spring-file-storage.jar,注意: 如果要上传文件到OSS平台,需要引入对应平台的SDK包。
application.yml文件中配置些基础信息。
enable-storage:只有状态开启才会被识别到
default-platform:默认的上传平台
domain:生成的文件url中访问的域名
base-path:存储地址
thumbnail-suffix:缩略图后缀
要是上传OSS对象存储平台,将aliyun oss提供的变量配置到相应的模块上即可。
springboot启动类中增加注解@EnableFileStorage,显式的开启文件上传功能,到这就可以用了
2、上传文件
接下来在业务类中引入FileStorageService服务,如下只要一行代码就可以完成文件上传,是不是So easy,下载也是如法炮制。
我们用postman测试上传一张图片,看到图片已经成功传到了/tmp/Pictures目录下,返回结果中包含了完整的访问文件的URL路径
不仅如此spring-file-storage还支持多种文件形式,URI、URL、String、byte[]、InputStream、MultipartFile,使开发更加灵活。
文件上传功能,更多时候我们都是在上传图片,那就会有动态裁剪图片、生成缩略图的需求,这些 spring-file-storage 都可以很容易实现。
而且我们还可以动态选择上传平台,配置文件中将所有平台开启,在实际使用中自由的选择。
3、下载文件
下载文件也同样的简单,可以直接根据文件url或者文件流下载。
提供了监听下载进度的功能,可以清晰明了的掌握文件的下载情况。
4、文件存在、删除
我们还可以根据文件的URL地址来判断文件是否存在、以及删除文件。
5、切面
工具还提供了每种操作的切面,可以在每个动作的前后进行干预,比如打日志或者玩点花活,实现FileStorageAspect类重写对应动作的xxxAround方法。
- 作者:cherryhua
- 链接:https://blog.cherrylord.com/article/post-14
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。