这是一个基于Spring Boot的文件存储服务,使用Cloudflare R2作为存储后端。该项目提供了完整的文件上传、下载、管理和访问功能,支持通过REST API进行文件操作。
CSDN博客:https://blog.csdn.net/weixin_61960336/article/details/148208649
- 文件上传:支持将文件上传到Cloudflare R2存储
- 文件列表:支持获取所有文件列表和按前缀筛选文件
- 文件访问:提供文件URL生成和访问功能
- 文件管理:支持文件删除和详细信息查询
- 文件组织:自动按日期组织文件存储结构
- Spring Boot:后端框架
- Cloudflare R2:对象存储服务
- AWS SDK for Java:与R2存储交互
- Swagger:API文档生成
- Lombok:简化代码
- SLF4J:日志管理
src/main/java/com/iding/cloudflare/r2/
├── controller/
│ └── r3Controller.java # REST API 控制器
├── service/
│ ├── FileUploadService.java # 服务接口
│ └── impl/
│ └── FileUploadServiceImpl.java # 服务实现
├── entity/
│ └── FileInfo.java # 文件信息实体类
├── config/
│ └── R2FileUtils.java # R2配置工具类
└── utils/
└── Result.java # 统一响应结果类
- 接口:
POST /api/file/r2/upload - 功能:上传文件到R2存储
- 参数:
file(文件) - 返回:文件访问URL
- 接口:
GET /api/file/r2/list - 功能:获取所有文件列表
- 返回:文件键列表
- 接口:
GET /api/file/r2/list/prefix - 功能:获取指定前缀的文件列表
- 参数:
prefix(文件前缀) - 返回:匹配的文件键列表
- 接口:
GET /api/file/r2/url - 功能:获取文件的访问URL
- 参数:
objectKey(文件键) - 返回:文件访问URL
- 接口:
DELETE /api/file/r2/delete - 功能:删除指定文件
- 参数:
objectKey(文件键) - 返回:删除操作结果
- 接口:
GET /api/file/r2/info - 功能:获取文件的详细信息
- 参数:
objectKey(文件键) - 返回:文件详细信息(大小、修改时间等)
项目需要配置以下参数:
# Cloudflare R2配置
r2.endpoint=your-r2-endpoint
r2.access-key=your-access-key
r2.secret-key=your-secret-key
r2.region=your-region
r2.bucket-name=your-bucket-name
r2.cdn-domain=your-cdn-domain- 克隆项目到本地
- 配置R2相关参数
- 运行Spring Boot应用
- 访问Swagger文档:
http://localhost:8080/swagger-ui.html
- 确保已正确配置Cloudflare R2的访问凭证
- 文件上传大小限制需要在配置文件中设置
- 建议在生产环境中配置适当的访问控制和认证机制
- 定期检查存储桶的访问权限设置
- JDK 17+
- Maven 3.6+
- Spring Boot 3.x
- Fork 项目
- 创建特性分支
- 提交更改
- 推送到分支
- 创建Pull Request
MIT License
- 微信:iYear1213
- CSDN博客:https://blog.csdn.net/weixin_61960336
如果本项目对你有帮助,欢迎通过以下方式请我喝杯咖啡:
| 微信赞赏码 | 支付宝赞赏码 |
|---|---|
![]() |
![]() |

