RelaxBin / minio-file

资源文件中心

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

resource文件资源中心说明

本项目使用Springboot2.6.7版本采用DDD领域架构模式,将不同的逻辑分层以便更好的维护。
版本:Springboot2.6.7 jdk:8

业务说明

此项目主要处理资源文件的上传、大文件分片上传、下载功能。

文件上传

文件上传分为完整文件上传和分片文件上传,最后都上传到Minio下,不用分片上传的文件则直接放入正式Minio桶中,分片的文件数据则先把各个文件块放入到临时分片桶中, 然后分片都上传完则从临时桶中合并数据,合并完毕后进行删除临时分片操作,然后更新资源附件库。

文件上传的接口:Controller目录是interfaces/upload/FileUploadController

业务逻辑如下:
1.前端上传前先调用“/isExist/file”接口,来判断是否已存在此文件
2.不存在文件则调用文件初始化接口”/init/fileData“,

2.1 判断minio是否存在桶,如果不存在创建minio桶
2.2 判断文件切片索引是否已经入缓存,没有将分片List结构入缓存供分片上传判断使用
2.3 资源附件表初始化保存,是否上传字段为还没有上传

3.初始化完毕,调用文件上传接口”/upload/file“

3.1 如果是完整文件直接调用minio的SDK将文件上传,更新资源附件表为已上传。
3.2 如果是分片文件则进入分片上传的业务方法里,判断与缓存分片是否一致,没问题上传临时分片桶
3.3 上传所有分片后则将所有临时分片进行合并,合并后的文件放入正式桶里。

文件下载

1.各个层(包)的使用说明

common

主要处理公用的工具以及对应的全局变量,也可以分页或结果

app

应用层,app层主要职责为组装domain层各个组件及基础设施层的公共组件,完成具体的业务服务。 app层可以理解为粘合各个组件的胶水,使得零散的组件组合在一起提供完整的业务服务。

domain

domain层是具体的业务领域层,是发生业务变化最为频繁的地方,是业务系统最核心的一层,具体的业务逻辑写在这里。

infrastructure

基础设施层,主要处理数据方面的持久化操作,如Mysql

  • dao包

mapper层,定义基本增删改查

  • po包

对应数据库实体属性

  • repository包

仓储业务,实现domain中的repository,调用dao处理增删改查数据。

interfaces

接口层,用户接口层是为前端应用提供restful或RPC请求的访问接口,在该层中主要是实现前端的业务逻辑,对前端业务数据的组装和封装,不对领域业务 逻辑实现,所有的领域业务逻辑都由用户都由该层封装后分配给一个或多个应用层服务来实现。

About

资源文件中心


Languages

Language:Java 100.0%