项目支持将文件上传至多种存储类型,包括:
- 兼容 S3 协议的对象存储:如 MinIO、阿里云 OSS 、腾讯云 COS、七牛云 Kodo、华为云 OBS、亚马逊 S3 等。
- 数据库存储:支持 MySQL、Oracle、PostgreSQL、SQL Server 等多种关系型数据库。
我个人强烈采用第一种方案,这是当前最主流的文件上传方案。
数据库存储也可以实现,但是只能存储非常小的文件,否则可能对数据库造成非常大的影响。
我们以七牛云存储为例,展示如何配置。
# 1 配置七牛云
进入文件配置页面:

点击编辑链接,弹出编辑窗口:

1、存储 bucket
空间管理里创建新的空间即可,如下图:

2、鉴权
在个人中心里找到秘钥管理:

3、节点地址 & 域名
节点地址可以参考如下的文档:
https://developer.qiniu.com/kodo/4088/s3-access-domainname

域名推荐自己绑定,我为了简单快点使用了七牛的测试域名:

# 2 后端上传文件
在文件列表里,点击上传按钮 ,即可上传成功。 上传完成后,云存储会返回文件对应的 URL 。

如图,文件上传通过服务端的形式,通过 api/infra/file/upload 接口先上传到服务端,然后通过服务端再上传到 云存储。

# 3 前端上传文件
项目支持前端上传文件,前端直接上传文件有如下优势:
- 减轻服务端压力
- 提升上传速度(减少中转环节)
修改 magic-admin-ui 前端项目的配置文件的 VITE_UPLOAD_TYPE 为 client 前端直传模式。
若是本地环境,则修改 .env.local 文件,如下图所示:

因为通过浏览器直接上传,需要在七牛云配置跨域设置:

配置完成之后,重新点击上传:

流程分为三个步骤:
1、调用 获取文件预签名地址 ,接口:/infra/file/presigned-url
2、调用七牛云存储服务(真实上传)
3、创建文件记录
