首页
开源
资讯
活动
开源许可证
软件工程云服务
软件代码质量检测云服务
持续集成与部署云服务
社区个性化内容推荐服务
贡献审阅人推荐服务
群体化学习服务
重睛鸟代码扫描工具
登录
注册
代码拉取完成,页面将自动刷新
Watch
1
Star
0
Fork
696
农夫有田
/
x-file-storage
forked from
dromara
/
x-file-storage
Fork 仓库
加载中
取消
确认
确定同步?
同步操作将从
dromara/x-file-storage
强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
同步 Wiki
(当前仓库的 wiki 将会被覆盖!)
取消
确定
代码
Issues
0
Pull Requests
0
Wiki
0
统计
标签
标签名
描述
提交信息
操作
v2.1.0
<h3 align="center"> <img src="https://x-file-storage.xuyanwu.cn/assets/logo.svg" height="200px" alt="logo"/><br /> <span>原名 X Spring File Storage 现已捐赠至 <a target="_blank" href="https://dromara.org/zh">dromara</a> 开源组织</span> </h3> <p align="center"> <a target="_blank" href="https://x-file-storage.dromara.org">x-file-storage.dromara.org</a> | <a target="_blank" href="https://x-file-storage.xuyanwu.cn">x-file-storage.xuyanwu.cn</a> | <a target="_blank" href="https://spring-file-storage.xuyanwu.cn">spring-file-storage.xuyanwu.cn</a> </p> <p align="center"> <a target="_blank" href="https://central.sonatype.com/search?q=org.dromara.x-file-storage"> <img src="https://img.shields.io/maven-central/v/org.dromara.x-file-storage/x-file-storage-core.svg?label=Maven%20Central" /> </a> <a target="_blank" href="https://www.apache.org/licenses/LICENSE-2.0"> <img src="https://img.shields.io/badge/license-Apache%202-green.svg" /> </a> <a target="_blank" href="https://www.oracle.com/technetwork/java/javase/downloads/index.html"> <img src="https://img.shields.io/badge/JDK-8+-blue.svg" /> </a> <a target="_blank" href='https://github.com/dromara/x-file-storage'> <img src="https://img.shields.io/github/stars/dromara/x-file-storage.svg?style=social" alt="github star"/> </a> <a href='https://gitee.com/dromara/x-file-storage'> <img src='https://gitee.com/dromara/x-file-storage/badge/star.svg?theme=dark' alt='star' /> </a> <br /> <a href='https://jq.qq.com/?_wv=1027&k=eGfeNqka'> <img src='https://img.shields.io/badge/QQ%E7%BE%A4-515706495-orange' alt='' /> </a> </p> # 📚简介 一行代码将文件存储到本地、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 协议的存储平台。查看 [所有支持的存储平台](https://x-file-storage.xuyanwu.cn/#/存储平台) 💡 通过 WebDAV 连接到 Alist 后,可以使用百度网盘、天翼云盘、阿里云盘、迅雷网盘等常见存储服务,查看 [Alist 支持的存储平台](https://alist-doc.nn.ci/docs/webdav) 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 ------- # 📜更新内容 - 新增 FastDFS 存储平台 - 新增 Azure Blob Storage 存储平台 - 新增复制文件,支持跨存储平台复制 - 新增移动(重命名)文件,支持跨存储平台移动(重命名) - 新增大文件手动分片上传(断点续传),1.0.0 版本早已支持大文件自动分片上传 - 新增计算哈希功能,上传下载时可以边处理边计算 - 上传无需强制获取文件大小,上传未知大小的文件更友好 - 优化 SpringBoot 自动配置兼容非 SpringWeb 环境 - 优化FileKey获取方式,避免空指针异常 - 优化上传代码结构 - 优化异常处理 - 优化进度监听器 - 修复上传时设置缩略图保存名称错误的BUG - 兼容低版本SpringBoot(2.0.x)的依赖注入 - 修复华为云 OBS 上传进度问题 - 修复 MultipartFile 存储到本地时,在某些情况下输入流未关闭的问题 - 修复 又拍云 USS 上传缩略图文件时 Response 未关闭的问题 ------- # 📦使用 点击 [快速入门](https://x-file-storage.xuyanwu.cn/#/快速入门) 查看全部存储平台的使用方法! #### 🔧 配置 这里以阿里云 OSS 为例,`pom.xml` 引入本项目,这里默认是 `SpringBoot` 环境,其它环境参考 [脱离 SpringBoot 单独使用](https://x-file-storage.xuyanwu.cn/#/脱离SpringBoot单独使用) ```xml <!-- 引入本项目 --> <dependency> <groupId>org.dromara.x-file-storage</groupId> <artifactId>x-file-storage-spring</artifactId> <version>2.1.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` 配置文件中添加以下基础配置 ```yaml 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`注解 ```java @EnableFileStorage @SpringBootApplication public class SpringFileStorageTestApplication { public static void main(String[] args) { SpringApplication.run(SpringFileStorageTestApplication.class,args); } } ``` #### ✨开始上传 支持 File、MultipartFile、byte[]、InputStream、URL、URI、String、HttpServletRequest,大文件会自动分片上传。如果想支持更多方式,请阅读 [文件适配器](https://x-file-storage.xuyanwu.cn/#/文件适配器) 章节 ```java @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(); } } ``` #### 🎨其它操作 ```java //手动构造文件信息,可用于其它操作 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 进行操作了,详情请阅读 [保存上传记录](https://x-file-storage.xuyanwu.cn/#/基础功能?id=保存上传记录) 章节 ```java //直接从数据库中获取 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://x-file-storage.xuyanwu.cn/#/快速入门) 查看全部存储平台的使用方法! -------
f00a038
2024-01-19 10:43
下载
v2.0.0
d0e6519
2023-10-18 10:54
下载
v1.0.3
069a42b
2023-08-17 17:24
下载
v1.0.2
abe0a84
2023-08-09 17:16
下载
v1.0.1
8ca12c3
2023-08-08 17:36
下载
v1.0.0
efa3573
2023-08-06 19:25
下载
v0.7.0
2c7187a
2022-11-14 10:46
下载
v0.6.1
1c5fff0
2022-09-05 14:50
下载
v0.6.0
d779c68
2022-08-17 15:40
下载
v0.5.0
d694fa9
2022-08-12 18:14
下载
v0.4.0
7c75abb
2021-06-09 09:14
下载
v0.3.0
faa6603
2021-06-04 15:44
下载
0.2.1
a3a7af9
2021-05-25 16:59
下载
v0.2.1
a3a7af9
2021-05-25 16:59
下载
0.2.0
97b4e8d
2021-05-25 13:32
下载
v0.2.0
97b4e8d
2021-05-25 13:32
下载
0.1.6
a6c9c50
2021-05-22 11:43
下载
v0.1.6
a6c9c50
2021-05-22 11:43
下载
下载
请输入验证码,防止盗链导致资源被占用
取消
下载