# 04 — 图标上传 **What to build:** `POST /api/resources/icon/upload`(multipart/form-data)接收图片文件,校验格式(png/jpg/gif/svg/webp)和大小(≤500KB),调 crm-file 模块的 `FileApi` 上传到 MinIO,返回可访问的预览 URL。前端将 URL 写入节点的 `icon` 字段。不合法的文件返回明确错误信息。 **Blocked by:** 01(需要 SysMenu icon 字段 + 依赖 crm-file 的 FileApi 接口可用)。 **Status:** ready-for-agent - [ ] `POST /api/resources/icon/upload`,参数 `file`(multipart) - [ ] 格式校验:拒绝非 png/jpg/gif/svg/webp 扩展名,返回错误 - [ ] 大小校验:拒绝超过 500KB 的文件,返回错误 - [ ] 调用 `FileApi` 上传,返回 `{ "url": "https://..." }` - [ ] TDD 测试覆盖:合法图片上传成功返回 URL、非法格式拒绝、超大小拒绝