X Spring File Storage v2.2.1 已经发布,Spring 文件存储库
X Spring File Storage v2.2.1 已经发布,Spring 文件存储库
此版本更新内容包括:
![logo]()
原名 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
更新内容
- 修复某些情况下哈希计算错误的问题
- 修复七牛云 Kodo 预签名 URL 无法使用的问题
使用
点击 快速入门 查看全部存储平台的使用方法!
配置
这里以阿里云 OSS 为例,pom.xml
引入本项目,这里默认是 SpringBoot
环境,其它环境参考 脱离 SpringBoot 单独使用
<!-- 引入本项目 --> <dependency> <groupId>org.dromara.x-file-storage</groupId> <artifactId>x-file-storage-spring</artifactId> <version>2.2.1</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.1

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Rust 通用代码生成器莲花,发布红莲尝鲜版二十六及其视频,PostgreSQL 数据库自动反射功能演示
Rust通用代码生成器莲花,发布红莲尝鲜版二十六及其视频,PostgreSQL数据库自动反射功能演示 Rust通用代码生成器莲花,已发布红莲尝鲜版二十六及其视频,PostgreSQL数据库自动反射功能演示。视频请见: https://www.bilibili.com/video/BV1MT421k7GT/ Rust通用代码生成器莲花,红莲尝鲜版二十六,此版本完善了数据库自动反射功能。完善了多对多候选功能,完善了下拉列表的空值。 Rust通用代码生成器:莲花将强大的生产力赋能广大程序员。无论是新开发的软件还是通过遗留数据库反射以再次开发的遗留项目,您都可以使用动词算子式通用代码生成器的强大生产力大大加速研发速度。莲花永远是广大程序员的瑞士军刀,是加快开发速度和提高开发质量的利器。 代码生成器的项目地址:https://gitee.com/jerryshensjf/Lotus二进制 war 包的下载地址:https://gitee.com/jerryshensjf/Lotus/attach_files Rust通用代码生成器:莲花 项目介绍 Rust通用代码生成器:莲花,是Java写成的R...
- 下一篇
新进展!deepin M1 项目更新至 deepin V23 RC2 版本
内容来源:deepin(深度)社区 在去年7月份,我们成功使 deepin 初步适配了Apple M1 。今年随着deepin V23 beta进入RC2版本,deepin M1项目理所当然地也会跟进更新。 除此之外,本次适配工作不仅限于提升系统环境版本,还顺带更新了一些系统底层组件版本,优化了项目各模块的打包流程并部分添加了定时器,每周构建一次内容以便开发者抢先体验尝鲜。下面,就开始详细介绍本次更新的具体内容。 系统环境 最新的系统环境如下: 组件 版本 deepin rootfs 环境 RC2 (20240614日构建) linux-image-asahi 6.8.9-6 m1n1 1.4.14 uboot asahi-v2024.04-1 mesa 24.1.0-asahi-20240228 更新过后的rootfs,已确定支持在Mac mini M1的最新14.5版本上成功安装启动。另外,由于deepin V23 ARM64 稳定仓库的软件包版本已经更新到了足以与deepin M1特有组件相兼容的程度,不再需要激进但不太稳定的CI仓库来构建系统环境。所以,在本次更新之后,deep...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL8.0.19开启GTID主从同步CentOS8
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题