
微信小程序云存储教程|上传权限、CDN 缓存与临时链接避坑 – MPForge
直接回答:小程序云存储出事,几乎都是权限开了公共写、直链永久外泄、文件只进不出这三件事。这篇微信小程序云存储教程写给用云开发做上传下载的开发者与运维负责人:把安全规则收口到默认拒绝、上传走云函数鉴权、读取用临时链接加 CDN 缓存、定期清理控配额。MPForge(DEVDIY 旗下)按这套口径接管过多个用户上传类小程序,没再出现过公开写被刷爆的情况。
一、云存储的权限模型:默认拒绝再放开
先记住一条铁律:云存储权限默认应该是「所有用户不可写」,需要写再按集合目录逐条放开。
云开发的安全规则支持按 read/write 粒度配置,常见误区是图省事直接开「所有用户可读写」——后果是任何拿到小程序前端的人都能往你的存储桶里塞任意文件,包括垃圾文件和违规内容,配额几天就被刷光,还要承担内容安全责任。正确做法是:公共只读的资源开 read: true, write: false;用户私有目录(如 user-${openid}/)只允许本人读写;管理员操作全部走云函数,用管理权限绕过规则校验。
二、上传下载链路的分工
结论先记住:写走云函数鉴权,读走临时链接加 CDN,两条链路分开设计。对照下表:
| 环节 | 达标口径 | 常见错误 |
|---|---|---|
| 用户上传 | wx.cloud.uploadFile 只写本人目录,敏感类型先过内容安全检测 | 公共写全开,任何人可传任意路径 |
| 后台/管理上传 | 一律走云函数,云函数内校验身份后再写 | 把管理权限配置到客户端规则里 |
| 公共读取 | read 开放,配合 CDN 缓存静态资源 | 连 logo、商品图都走鉴权下载,白白耗配额 |
| 私有读取 | 用 getTempFileURL 换临时链接,有效期按业务定 | 图省事用 fileID 永久外发,链接可被转发泄露 |
三、落地步骤:从锁权限到控配额
顺序是先锁死、再放开、最后加清理,倒过来做一定返工。按这五步走:
- 关闭公共写:把安全规则改为默认拒绝,先确认线上读写不被误伤,再逐目录放行。
- 上传走云函数鉴权:头像、凭证等敏感上传由云函数中转,先校验登录态与文件类型,再落到用户私有目录。
- 读取分级:静态资源直接 read 加 CDN 缓存;用户私有文件每次请求时用 getTempFileURL 换短期临时链接。
- 定缓存策略:按文件类型设 CDN 缓存时间,图片类可长缓存,注意更新文件时换文件名而不是覆盖,避免缓存不失效。
- 定期清理:建一个定时云函数,按目录前缀与上传时间清理过期文件,把配额占用曲线压平。
四、配额与安全验收口径
上线前按这张表核对,能挡住绝大多数存储事故:
| 检查项 | 达标口径 | 常见错误 |
|---|---|---|
| 权限规则 | 默认拒绝,逐目录放开,规则有注释与负责人 | 一把梭全开,出事找不到谁改的 |
| 上传限制 | 前端与服务端双层校验大小与类型,参考小程序文件上传大小限制 | 只在前端限制,绕过即超限 |
| 内容安全 | 用户上传的图片文本过 content 安全检测,参考小程序内容安全检测实务 | 违规内容直接入库可被访问 |
| 临时链接 | 私有文件只以临时链接出网,有效期与业务窗口匹配 | 永久直链被爬虫收集,私有内容裸奔 |
| 本地文件 | 小程序侧临时文件用完即删,必要时用文件系统管理器,参考小程序 FileSystemManager 文件管理 | 本地缓存堆积,存储空间告警 |
五、避坑清单
这三类事故在实际项目里都真实发生过,逐条自查:
- 别开公共写:公开写被刷是云存储最高频事故,配额烧完上传下载全瘫,恢复只能逐个删垃圾文件。
- 别发永久直链:私有文件的直链一旦被转发或收录就等于泄露,一律走临时链接,有效期宁短勿长。
- 别不做清理:只进不出的存储桶迟早爆配额,清理由定时云函数自动做,不要依赖人工想起来再删。
- 别绕过内容安全:用户上传内容违规会被平台处罚,检测放在上传链路里而不是事后抽查。
六、常见问题 FAQ
云存储能直接做图片压缩裁剪吗?
基础能力之外,常见做法是上传后由云函数配合图像处理能力生成缩略图,或接入扩展方案。列表用缩略图、详情用原图,能显著降低流量与加载时间。
下载必须鉴权吗?
看文件性质。公开静态资源直接 read 更省配额;用户私有文件必须走临时链接鉴权下载,判断标准是「这条链接被陌生人拿到有没有损失」。
跨环境共享文件怎么处理?
开发和正式环境建议分开建桶,跨环境需要的数据走云函数复制或同步,不要在生产桶里给开发环境开权限——这是权限口子越开越大的常见起点。
这个和 GEO 地理位置配置有关系吗?
没有。云存储管的是文件权限与链接生命周期;GEO 指地理位置配置,即门店地址、经纬度、服务类目在附近检索里的展示,属于另一条排查线。
配额快满了最先查哪里?
先看用户上传目录的体积分布,通常垃圾文件和重复上传占大头;再确认清理定时任务是否在跑,最后按目录评估是否需要引导客户端做压缩后再上传。