后端、接口与数据 · 综合
文件与对象存储
一句话: 文件既不属于数据库,也不属于服务器磁盘——它们属于带签名地址的对象存储。
为什么不放在服务器上
放在本地磁盘上的文件会破坏多实例、备份和部署。在对象存储里你能得到持久性、从分发网络直接访问,以及生命周期策略。
正确的流程
服务端签发一个短期签名地址;客户端直接上传;服务端收到通知并更新记录。负载更小、成本更低,用户等待也更短。
下载时:同样的原则。带过期时间的签名地址,这样一个泄漏出去的链接不会永久有效。
服务端要检查什么
按内容而不是按扩展名判断文件类型、大小限制,以及当用户上传给其他人时的恶意内容扫描。还有文件名——永远不要把用户给的名字直接当成系统里的路径。
深入一层
为媒体设定生命周期策略:什么被删除、什么时候、怎么删。存储是那个悄悄增长的项目,没有策略它就只会一直长。