1.6 KiB
1.6 KiB
07 - 图片预览(HTTP 传输与内联显示)
功能目标
- 在消息列表中对图片进行缩略图预览与放大查看。
- 图片与文件一致,统一走 HTTP 上传/下载,仅通过 WebSocket 广播 FILE 元数据(fileId、fileName、mimeType 等),避免 WebSocket 消息大小限制(如 200KB)与长传断连。
前端(Vue)
- 识别规则
mimeType满足image/*时按图片渲染;消息类型为FILE(或历史兼容的IMAGE)。
- 展示形态
- 消息卡片中显示缩略图(限制最大宽高)。
- 点击后弹窗预览。
- 传输策略
- 图片一律走 HTTP:与普通文件相同,使用
POST /api/room/{roomCode}/file/upload上传,服务端落盘后广播一条FILE消息(含storage: 'server');展示时使用GET /api/room/{roomCode}/file/{fileId}作为图片src,无需 base64 或 WebSocket 传图。
- 图片一律走 HTTP:与普通文件相同,使用
后端(Spring Boot)
- 复用
RoomFileController的上传/下载接口;与普通文件相同的大小与频率限制。
协议与数据
- 图片消息使用 FILE 类型,与文件一致:
type: 'FILE',storage: 'server',fileId、fileName、fileSize、mimeType(如image/png)。
- 历史兼容:若存在旧版
IMAGE类型且带imageData(base64),前端仍可解析并显示。
边界与注意点
- 性能:大图不再经 WebSocket,无 200KB 限制,由 HTTP 与服务器磁盘承载。
- 安全:图片仅作二进制展示,不执行脚本;避免将 payload 当 HTML 渲染。