Skip to content

文件与静态资源

系统通过 public/ 对外提供静态资源,聊天上传内容保存到 public/upload/。上传接口返回的资源地址可直接用于消息内容展示。

目录约定

路径用途维护建议
public/static/Web 页面使用的 JavaScript、样式、图片和音频等静态资源。随版本发布;使用版本化发布和缓存策略。
public/upload/images/YYYYMM/聊天图片。与数据库一并备份。
public/upload/files/YYYYMM/聊天文件、视频和语音文件。与数据库一并备份;关注磁盘空间。
public/upload/avatars/YYYYMM/客服头像。与数据库一并备份。
public/upload/settings/客服端设置类图片。与数据库一并备份。
runtime/日志、Session、PID 与运行时文件。可清理陈旧临时文件,但不要在服务运行时整体删除。

上传流程

访客和客服端都遵循“两步上传”:先上传文件,再把返回的 src 组织为消息内容后发送消息。

text
选择文件

调用上传接口(multipart/form-data)

取得 data.src、data.name、data.size

调用发送消息接口

上传限制由系统设置读取;访客端初始化数据会返回实际的大小限制。文件类型与大小须以前端校验提升体验,并以后端接口校验作为最终依据。

资源地址

上传接口返回协议相对地址,例如 //<部署域名>/upload/images/...。在页面渲染时应保留该地址,不要替换为开发环境域名。

部署要求

  1. Web 服务运行用户对 public/upload/ 具备创建目录和写文件权限。
  2. 外部访问只应读取静态资源;站点或反向代理不得把上传目录交给 PHP、脚本解释器或 CGI 执行。
  3. 为上传目录设置备份与容量监控;文件不会因为数据库备份而自动备份。
  4. 使用对象存储或 CDN 前,先确保上传返回地址、静态读取路径和消息历史中的既有地址可兼容。

缓存建议

  • public/static/ 可采用带版本号或内容哈希的长期缓存策略。
  • public/upload/ 的资源地址由系统生成,建议保持可直接读取;清理历史资源前要先确认消息记录和业务引用已不再需要。
  • API、登录态和访客初始化响应不应被共享缓存保存。