X Spring File Storage v2.2.0 已经发布,Spring 文件存储库
X Spring File Storage v2.2.0 已经发布,Spring 文件存储库
此版本更新内容包括:
原名 X Spring File Storage 现已捐赠至 dromara 开源组织
x-file-storage.dromara.org | x-file-storage.xuyanwu.cn | spring-file-storage.xuyanwu.cn
简介
一行代码将文件存储到本地、FTP、SFTP、WebDAV、阿里云 OSS、华为云 OBS、七牛云 Kodo、腾讯云 COS、百度云 BOS、又拍云 USS、MinIO、 Amazon S3、GoogleCloud Storage、FastDFS、 Azure Blob Storage、Cloudflare R2、金山云 KS3、美团云 MSS、京东云 OSS、天翼云 OOS、移动 云EOS、沃云 OSS、网易数帆 NOS、Ucloud US3、青云 QingStor、平安云 OBS、首云 OSS、IBM COS、其它兼容 S3 协议的存储平台。查看 所有支持的存储平台
通过 WebDAV 连接到 Alist 后,可以使用百度网盘、天翼云盘、阿里云盘、迅雷网盘等常见存储服务,查看 Alist 支持的存储平台
支持在不同存储平台之间迁移文件,详情查看 迁移文件
GitHub:https://github.com/dromara/x-file-storage Gitee:https://gitee.com/dromara/x-file-storage
文档1:https://x-file-storage.dromara.org 文档2:https://x-file-storage.xuyanwu.cn 文档3:https://spring-file-storage.xuyanwu.cn
更新内容
- 新增获取文件
- 新增列举文件
- 重构预签名 URL 支持客户端上传、下载、删除等操作
- 新增 Solon 插件
- 升级 Hutool 版本
- 手动分片上传功能优化、以及增加对 GoogleCloud Storage 的支持
- 优化缩略图异常处理
- 优化代码结构
- 修复分片场景下哈希值一致问题
- 修复 Minio 分片上传偶发性报错
- 修复本地存储添加静态资源访问未生效的问题
使用
点击 快速入门 查看全部存储平台的使用方法!
配置
这里以阿里云 OSS 为例,pom.xml
引入本项目,这里默认是 SpringBoot
环境,其它环境参考 脱离 SpringBoot 单独使用
<!-- 引入本项目 --> <dependency> <groupId>org.dromara.x-file-storage</groupId> <artifactId>x-file-storage-spring</artifactId> <version>2.2.0</version> </dependency> <!-- 引入 阿里云 OSS SDK,如果使用其它存储平台,就引入对应的 SDK --> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.16.1</version> </dependency>
application.yml
配置文件中添加以下基础配置
dromara: x-file-storage: #文件存储配置 default-platform: aliyun-oss-1 #默认使用的存储平台 aliyun-oss: - platform: aliyun-oss-1 # 存储平台标识 enable-storage: true # 启用存储 access-key: ?? secret-key: ?? end-point: ?? bucket-name: ?? domain: ?? # 访问域名,注意“/”结尾,例如:https://abc.oss-cn-shanghai.aliyuncs.com/ base-path: test/ # 基础路径
编码
在启动类上加上@EnableFileStorage
注解
@EnableFileStorage @SpringBootApplication public class SpringFileStorageTestApplication { public static void main(String[] args) { SpringApplication.run(SpringFileStorageTestApplication.class,args); } }
✨开始上传
支持 File、MultipartFile、byte[]、InputStream、URL、URI、String、HttpServletRequest,大文件会自动分片上传。如果想支持更多方式,请阅读 文件适配器 章节
@RestController public class FileDetailController { @Autowired private FileStorageService fileStorageService;//注入实列 /** * 上传文件 */ @PostMapping("/upload") public FileInfo upload(MultipartFile file) { //只需要这一行代码即可上传成功 return fileStorageService.of(file).upload(); } /** * 上传文件,成功返回文件 url */ @PostMapping("/upload2") public String upload2(MultipartFile file) { FileInfo fileInfo = fileStorageService.of(file) .setPath("upload/") //保存到相对路径下,为了方便管理,不需要可以不写 .setObjectId("0") //关联对象id,为了方便管理,不需要可以不写 .setObjectType("0") //关联对象类型,为了方便管理,不需要可以不写 .putAttr("role","admin") //保存一些属性,可以在切面、保存上传记录、自定义存储平台等地方获取使用,不需要可以不写 .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(); } /** * 直接读取 HttpServletRequest 中的文件进行上传,成功返回文件信息 * 使用这种方式有些注意事项,请查看文档 基础功能-上传 章节 */ @PostMapping("/upload-request") public FileInfo uploadPlatform(HttpServletRequest request) { return fileStorageService.of(request).upload(); } }
其它操作
//手动构造文件信息,可用于其它操作 FileInfo fileInfo = new FileInfo() .setPlatform("huawei-obs-1") .setBasePath("test/") .setPath("aa/") .setFilename("image.png") .setThFilename("image.png.min.jpg"); //文件是否存在 boolean exists = fileStorageService.exists(fileInfo); //下载 byte[] bytes = fileStorageService.download(fileInfo).bytes(); //删除 fileStorageService.delete(fileInfo); //其它更多操作
如果将文件记录保存到数据库中,还可以更方便的根据 URL 进行操作了,详情请阅读 保存上传记录 章节
//直接从数据库中获取 FileInfo 对象,更加方便执行其它操作 FileInfo fileInfo = fileStorageService.getFileInfoByUrl("https://abc.def.com/test/aa/image.png"); //文件是否存在 boolean exists = fileStorageService.exists("https://abc.def.com/test/aa/image.png"); //下载 byte[] bytes = fileStorageService.download("https://abc.def.com/test/aa/image.png").bytes(); //删除 fileStorageService.delete("https://abc.def.com/test/aa/image.png"); //其它更多操作
点击 快速入门 查看全部存储平台的使用方法!
详情查看:https://gitee.com/dromara/x-file-storage/releases/v2.2.0

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
AGI 趋势下的云原生数据计算系统
6 月 22 日,由开源中国主办,华为、上海浦东软件园联合主办的【云技术专场】OSC源创会 · 上海站 · 104期线下沙龙成功举办。来自拓数派的资深架构师徐阳发表了《AGI 趋势下的云原生数据计算系统》主题演讲,结合拓数派数据计算系统 PieDataCS 的实战落地经验为大家详细介绍 AGI 时代的云原生数据计算系统。 以下为徐阳的演讲回顾,内容由拓数派贡献。 拓数派资深架构师徐阳 自2023年后,⼈⼯智能技术进⼊了⼀个更为成熟和⼴泛应⽤的阶段,人工通用智能(AGI)这一概念也成为了科技界和产业界热议的焦点。本文将结合AGI时代背景,从架构设计到落地实践,详细介绍拓数派云原生大模型数据计算系统 PieDataCS。 1 中国AGI发展现状与趋势 1.1 AGI市场与技术发展趋势 2023年被称为是AGI元年,大模型在人工智能领域掀起了一场风暴。尽管⼤模型在模仿⼈类认知⽅⾯取得了显著进步,但距离真正的通⽤智能还有很长的一段路。由于底层模型和算力离企业市场较远,我们相信AGI的发展将由应用占主导。 而 AI Agent 可以简化用户与大模型的互动,允许用户只需指定目标,即可驱动大模型完成...
- 下一篇
Steam++ 3.0.0-rc.9 已经发布,Steam 工具箱
Steam++ 3.0.0-rc.9 已经发布,Steam 工具箱 此版本更新内容包括: 更新说明 新增 网络加速 二级代理功能和相关设置项 新增 本地令牌 Steam App共存令牌导入方式,此方式导入令牌可与 Steam App 保持同步 修复 库存游戏 新版本 Steam Beta Client 游戏数据解析出错问题 修复 Steam 挂卡 仅剩一个游戏时发生闪退的问题 修复 Steam 挂时长 启动和暂停按钮重叠显示问题 修复 Steam 账号切换 对蒸汽平台的切换没有正确生效问题 新增 账号切换 显示账号用户名的选项 修复 网络加速 在某些计算机名称为特殊字符开头的电脑上加速出现错误的问题 修复 网络加速 Linux 非 Host 模式不检测 443 占用 修复 程序每次启动 窗口大小发生变化的问题 修复 挂卡与确认交易功能 记住的登录状态失效过于频繁的问题 更新 Avalonia 版本到 11.1.0-rc1 改进 网络加速 现在不默认启用 DoH 文件校验 File Checksum (SHA256) Steam++_v3.0.0-rc.9_win_x64.7z 402A...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6