X Spring File Storage 发布 v0.3.0 版本,Spring 文件存储库
简介
在 SpringBoot 中通过简单的方式将文件存储到本地、阿里云OSS、华为云OBS、七牛云Kodo、腾讯云COS、百度云 BOS、又拍云USS、MinIO
后续即将支持 亚马逊S3、谷歌云存储、FTP、SFTP、WebDAV、Samba、NFS
GitHub:https://github.com/1171736840/spring-file-storage
Gitee:https://gitee.com/XYW1171736840/spring-file-storage
官网文档:https://spring-file-storage.xuyanwu.cn
更新日志
- 增加官网文档
- 增加下载进度监控
- 增加对动态添加删除存储平台和切面的支持
- 增加方法:直接判断文件是否存在的重载方法
- 修复下载进度监控对于下载结束判断错误的bug
使用说明
配置
pom.xml
引入依赖
<dependencies> <!-- spring-file-storage 必须要引入 --> <dependency> <groupId>cn.xuyanwu</groupId> <artifactId>spring-file-storage</artifactId> <version>0.2.0</version> </dependency> <!-- 华为云 OBS 不使用的情况下可以不引入 --> <dependency> <groupId>com.huaweicloud</groupId> <artifactId>esdk-obs-java</artifactId> <version>3.20.6.1</version> </dependency> <!-- 阿里云 OSS 不使用的情况下可以不引入 --> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.6.0</version> </dependency> <!-- 七牛云 Kodo 不使用的情况下可以不引入 --> <dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>7.4.0</version> </dependency> <!-- 腾讯云 COS 不使用的情况下可以不引入 --> <dependency> <groupId>com.qcloud</groupId> <artifactId>cos_api</artifactId> <version>5.6.38</version> </dependency> <!-- 百度云 BOS 不使用的情况下可以不引入 --> <dependency> <groupId>com.baidubce</groupId> <artifactId>bce-java-sdk</artifactId> <version>0.10.162</version> </dependency> <!-- 又拍云 USS 不使用的情况下可以不引入 --> <dependency> <groupId>com.upyun</groupId> <artifactId>java-sdk</artifactId> <version>4.2.2</version> </dependency> <!-- MinIO 不使用的情况下可以不引入 --> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>7.0.2</version> </dependency> </dependencies>
application.yml
配置文件中添加以下相关配置(不使用的平台可以不配置)
spring: file-storage: #文件存储配置 default-platform: local-1 #默认使用的存储平台 thumbnail-suffix: ".min.jpg" #缩略图后缀,例如【.min.jpg】【.png】 local: # 本地存储,不使用的情况下可以不写 - platform: local-1 # 存储平台标识 enable-storage: true #启用存储 enable-access: true #启用访问(线上请使用 Nginx 配置,效率更高) domain: "" # 访问域名,例如:“http://127.0.0.1:8030/test/file/”,注意后面要和 path-patterns 保持一致,“/”结尾,本地存储建议使用相对路径,方便后期更换域名 base-path: D:/Temp/test/ # 存储地址 path-patterns: /test/file/** # 访问路径,开启 enable-access 后,通过此路径可以访问到上传的文件 huawei-obs: # 华为云 OBS ,不使用的情况下可以不写 - platform: huawei-obs-1 # 存储平台标识 enable-storage: false # 启用存储 access-key: ?? secret-key: ?? end-point: ?? bucket-name: ?? domain: ?? # 访问域名,注意“/”结尾,例如:http://abc.obs.com/ base-path: hy/ # 基础路径 aliyun-oss: # 阿里云 OSS ,不使用的情况下可以不写 - platform: aliyun-oss-1 # 存储平台标识 enable-storage: false # 启用存储 access-key: ?? secret-key: ?? end-point: ?? bucket-name: ?? domain: ?? # 访问域名,注意“/”结尾,例如:https://abc.oss-cn-shanghai.aliyuncs.com/ base-path: hy/ # 基础路径 qiniu-kodo: # 七牛云 kodo ,不使用的情况下可以不写 - platform: qiniu-kodo-1 # 存储平台标识 enable-storage: false # 启用存储 access-key: ?? secret-key: ?? bucket-name: ?? domain: ?? # 访问域名,注意“/”结尾,例如:http://abc.hn-bkt.clouddn.com/ base-path: base/ # 基础路径 tencent-cos: # 腾讯云 COS - platform: tencent-cos-1 # 存储平台标识 enable-storage: true # 启用存储 secret-id: ?? secret-key: ?? region: ?? #存仓库所在地域 bucket-name: ?? domain: ?? # 访问域名,注意“/”结尾,例如:https://abc.cos.ap-nanjing.myqcloud.com/ base-path: hy/ # 基础路径 baidu-bos: # 百度云 BOS - platform: baidu-bos-1 # 存储平台标识 enable-storage: true # 启用存储 access-key: ?? secret-key: ?? end-point: ?? # 例如 abc.fsh.bcebos.com bucket-name: ?? domain: ?? # 访问域名,注意“/”结尾,例如:https://abc.fsh.bcebos.com/abc/ base-path: hy/ # 基础路径 upyun-uss: # 又拍云 USS - platform: upyun-uss-1 # 存储平台标识 enable-storage: true # 启用存储 username: ?? password: ?? bucket-name: ?? domain: ?? # 访问域名,注意“/”结尾,例如:http://abc.test.upcdn.net/ base-path: hy/ # 基础路径 minio: # MinIO - platform: minio-1 # 存储平台标识 enable-storage: true # 启用存储 access-key: ?? secret-key: ?? end-point: ?? bucket-name: ?? domain: ?? # 访问域名,注意“/”结尾,例如:http://minio.abc.com/abc/ base-path: hy/ # 基础路径
注意配置每个平台前面都有个-
号,通过以下方式可以配置多个
local: - platform: local-1 # 存储平台标识 enable-storage: true enable-access: true domain: "" base-path: D:/Temp/test/ path-patterns: /test/file/** - platform: local-2 # 存储平台标识,注意这里不能重复 enable-storage: true enable-access: true domain: "" base-path: D:/Temp/test2/ path-patterns: /test2/file/**
编码
在启动类上加上@EnableFileStorage
注解
@EnableFileStorage @SpringBootApplication public class SpringFileStorageTestApplication { public static void main(String[] args) { SpringApplication.run(SpringFileStorageTestApplication.class, args); } }
开始使用
@RestController public class FileDetailController { @Autowired private FileStorageService fileStorageService;//注入实列 /** * 上传文件,成功返回文件 url */ @PostMapping("/upload") public String upload(MultipartFile file) { FileInfo fileInfo = fileStorageService.of(file) .setPath("upload/") //保存到相对路径下,为了方便管理,不需要可以不写 .setObjectId("0") //关联对象id,为了方便管理,不需要可以不写 .setObjectType("0") //关联对象类型,为了方便管理,不需要可以不写 .upload(); //将文件上传到对应地方 return fileInfo == null ? "上传失败!" : fileInfo.getUrl(); } /** * 上传图片,成功返回文件信息 * 图片处理使用的是 https://github.com/coobird/thumbnailator */ @PostMapping("/upload-image") public FileInfo uploadImage(MultipartFile file) { return fileStorageService.of(file) .image(img -> img.size(1000,1000)) //将图片大小调整到 1000*1000 .thumbnail(th -> th.size(200,200)) //再生成一张 200*200 的缩略图 .upload(); } /** * 上传文件到指定存储平台,成功返回文件信息 */ @PostMapping("/upload-platform") public FileInfo uploadPlatform(MultipartFile file) { return fileStorageService.of(file) .setPlatform("aliyun-oss-1") //使用指定的存储平台 .upload(); } }
如果还想使用除了保存文件之前的其它功能,例如删除、下载等功能可以查看详细的使用文档
GitHub:https://github.com/1171736840/spring-file-storage
Gitee:https://gitee.com/XYW1171736840/spring-file-storage
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Tapdata 数据库实时同步的技术要点
Tapdata 是由深圳钛铂数据有限公司研发的一款实时数据处理及服务的平台产品,企业可以使用 Tapdata 快速构建数据中台和实时数仓, Tapdata 提供了一站式的解决方案,包括实时数据采集、数据融合以及数据发布等功能和能力。 Tapdata 专注于实时数据的处理技术,在数据库迁移和同步方面,Tapdata 的表现非常优秀,实时、多元、异构,尤其在关系数据库到非关系数据库之间的双向同步方面,无论是从操作上,还是效率上,都体现了业界领先的水平。 本文重点阐述 Tapdata 在数据库实时同步方面的技术要点。 基于数据库日志的实时迁移或同步 在数据库同步场景下,Tapdata 支持批量及增量的数据迁移及同步。Tapdata 主打的是实时场景,所以在数据库增量同步上是一个关键能力。目前 Tapdata 支持的数据源,基本上都支持增量同步。大部分场景下 Tapdata 通过解析数据库日志的方式来获得源端数据库的增删改操作,然后将这些操作转化为标准的数据库事件,推送到内部处理队列。 数据同步流程 那么,Tapdata 是怎么样来做数据同步的呢? 第一层的数据同步是基于CDC机制,也就是说它...
- 下一篇
IMI v1.3.2 发布,基于 Swoole 的协程 PHP 开发框架
基于 Swoole 的协程 PHP 开发框架 IMI v1.3.2 已经发布。 随便说说 目前 imi v2 版本已基本完成开发,正在进行文档编写工作。 最近把官网、文档模版、所有组件都挪到了 imi 主仓库进行维护。 以后所有的 issue、Pull Request 都在主仓库进行。 imi v2 版本最新规划及动态: https://github.com/Yurunsoft/imi/issues/66 如果有任何问题,欢迎联系我们! 更新日志 优化 优化 ConnectionBinder 使用 ServerBean 修复 修复模型保存更新问题 修复 Entity 注解 camel 设为 false 失效问题 修复关联模型问题 修复模型查询后的序列化问题 修复因心跳导致的,偶现连接跨协程使用问题 修复在用户进程中,向客户端推送数据有警告的问题 修复生成用注释表示的方法时,默认值中有数组时的格式问题 Fix typo (#95) 详情查看:https://gitee.com/yurunsoft/IMI/releases/v1.3.2
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8编译安装MySQL8.0.19
- Red5直播服务器,属于Java语言的直播服务器
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题