NocoBase 文件管理实战:3 步配好外部存储权限控制
NocoBase 文件管理实战:3 步配好外部存储权限控制
【免费下载链接】nocobaseNocoBase is an open-source AI + no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobase
NocoBase 是一款开源 AI + 低代码平台,文件管理是它最基础也最常被折腾的功能:上传文件、存文件、控制谁能访问。这篇文章带你从零把外部存储权限控制搭起来,本地磁盘和阿里云 OSS、AWS S3、腾讯云 COS 都覆盖到,看完就能自己配一套可上线的文件体系。
🚀 快速上手:3 分钟完成首次配置
第一次用不用碰云存储,本地存储开箱即用:
- 管理后台打开「插件管理」,确认 file-manager 插件已启用,它装在
packages/plugins/@nocobase/plugin-file-manager/,随主程序一起发布。 - 进插件设置页,默认已有一个 Local storage:文件落在
storage/uploads目录,单文件上限 20MB。 - 建一个带附件字段的表单或表格,上传一张测试图,点开预览确认能打开。
跑通后你会发现,后面接任何云存储都是同一套动作:新建存储 → 填参数 → 测试连接 → 指定文件落哪个存储。
存储方案怎么选
| 存储类型 | 适合场景 | 需要你准备 | 取舍 |
|---|---|---|---|
| 本地 local | 开发测试、单机小团队 | 无 | 零配置,但扩容和迁移都要动磁盘 |
| 阿里云 OSS | 国内业务、访问速度优先 | region、AccessKey、Bucket | 有公网流量费用,要管好密钥安全 |
| AWS S3 | 海外业务、已有 AWS 账号 | region、AccessKey、Bucket | 国内访问延迟高 |
| 腾讯云 COS | 国内业务、已有腾讯云账号 | Region、SecretId/SecretKey、Bucket | 与 OSS 定位类似,按现有云选 |
经验值:先用本地开发,上线前把新附件切到云存储,已有文件不受影响,业务代码不用动。
权限怎么配:三种常见场景
文件权限分两层:存储层管「文件能不能公开访问」,ACL 层管「谁能上传、谁能改记录」。两层都配了才算闭环。
公开文件:产品图、logo 这类
在存储配置里打开public(公开访问)开关,该存储下的文件就能直接用 URL 打开,不用登录。官网素材、商品图适合走公开。
私有文件:合同、内部报表
public 保持关闭(默认就是关的)。此时访问要走 NocoBase 的登录和权限校验,没权限的链接直接 403。内部文档建议全部私有。
按角色授权:谁能传、谁能删
附件在 NocoBase 里是独立资源 attachments。进「角色权限」页面,给对应角色勾选 attachments 的查看、创建、更新、删除权限。比如让"员工"只有上传权,"管理员"才能删。
❓ 常见问题与避坑
1. 上传超过 20MB 被拒?每个存储都有大小规则,本地默认 20MB。在存储的 rules 里调大 size 即可,大文件业务建议直接上云再放宽限制。
2. OSS 配好了但上传报错?九成是 Bucket 和 region 不匹配,或 AccessKey 没给该 Bucket 读写权限。先点存储页的「测试连接」跑一遍,再查密钥权限。
3. 只想允许传图片和 PDF?存储规则里配 MIME 类型限制(源码在插件的src/server/rules/目录),填image/*, application/pdf,逗号分隔多个类型。不符合的文件会被直接拦下,这就是 NocoBase 文件上传限制的实现点。
4. 文件突然打不开了?先确认存储的 public 属性没被误改。私有存储必须登录后、且角色有 attachments 查看权限才能打开。
5. 换了存储,旧文件还能访问吗?能。附件记录存的是存储 ID + 文件名,切存储只影响新上传的文件。
🛡️ 安全加固与性能调优清单
安全
- 云存储密钥只授予单个 Bucket 的读写权限,别用主账号 Key
- 私有存储的 Bucket ACL 在云厂商侧也设为私有,别开公开读
- 确认上传接口要求登录(默认已开,attachments 的 upload 仅对已登录用户放行)
- 本地存储目录避开会被直接列目录的 Web 根路径
性能
- 图片多的业务给云存储配 CDN 域名,填到存储的 baseUrl
- 大文件业务优先上云,别让本地盘扛生产流量
- 定期清理孤儿附件:库里有记录但文件已不存在的,删掉对应记录
一句话收尾:存储管文件放哪,权限管谁能碰,两层都配好,NocoBase 的文件体系就算立住了。想深入的话,仓库里的插件文档在docs/docs/cn/plugins/@nocobase/plugin-file-manager/,实现细节就看插件源码packages/plugins/@nocobase/plugin-file-manager/。
【免费下载链接】nocobaseNocoBase is an open-source AI + no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
