# oss-file-upload
**Repository Path**: kulalasmile/oss-file-upload
## Basic Information
- **Project Name**: oss-file-upload
- **Description**: 基于阿里云OSS和Minio实现的文件管理接口
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 8
- **Forks**: 1
- **Created**: 2020-11-19
- **Last Updated**: 2024-05-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: minio, oss
## README
# OSS对象云存储
## 介绍
基于阿里云OSS和Minio实现的文件管理接口,通过配置文件控制生效,支持文件上传和下载,文件信息管理,可作为后台系统的文件管理。
## 环境依赖
- 版本
spring-boot 2.2.8.RELEASE knife4j 2.0.4 mysql5.7或8
- 依赖
- 阿里云OSS
```xml
com.aliyun.oss
aliyun-sdk-oss
3.9.1
com.aliyun
aliyun-java-sdk-core
4.5.9
```
- minio
```xml
io.minio
minio
7.1.4
```
## 数据库设计
文件信息表用来保存文件基本信息,文件fileName和OSS的objectName保持一致,用于关联文件信息和文件
使用id做业务文件id可实现业务表单一对一保存文件

使用relateId做业务id可实现业务表单一对多保存文件

## 使用方式
- 修改application.yml,通过修改oss.type来控制storage bean的注入,显式的进行开关对应的OSS.
- 修改数据库连接配置,启动完成后会自动创建数据表
- 进入localhost:8080/doc.html接口文档,进行测试

1. 上传minio
1. 选择文件,输入关联编号(可选),上传单个文件


2. 根据编号查询url


3. 根据关联编号查询url


4. 根据编号下载文件

5. 根据文件编号查询文件信息

6. 根据关联编号查询文件信息

## 流程
- 上传流程

- 下载流程

## 注意
- 使用springboot 3.0.4版本和knife4j最新版本时,会报错无法启动,可能是依赖冲突原因(查询资料,都说是Guaua版本的原因,我排除knife4j或minio的Guaua依赖都无法解决)
- 查询文件url时,只能对公共读权限的bucket生效
## 参考
参考了[felord](https://gitee.com/felord)大神的 [oss-spring-boot](https://gitee.com/felord/oss-spring-boot/tree/master)项目,在此基础上更换了新的minio版本,使用新的API,添加数据库保存文件信息。
菜鸟码农,可能会有不少错误,请大家多多指教