来源:对 PR #111(图床功能,S.EE,commit 4a424ce)的代码 review,非用户上报。
开启图床后,编辑器插入图片的逻辑有几处健壮性问题。
1. 批量上传中途失败 → 已传图成孤儿、正文一张都不插入
frontend/src/views/articles/editor/composables/useEditorHelper.ts 的 uploadImageFiles 在启用图床时是「先循环把所有图片传到 S.EE,全部传完再统一插入正文」。
若其中某张上传抛错:
- 之前已成功上传的图片已经存在于 S.EE(无任何引用,成了孤儿);
- catch 只弹一句笼统提示,整批一张都不会插入正文,已成功的也丢失。
2. 可能在正文插入空 ![]()
后端 backend/internal/service/image_hosting_service.go 的 Upload 成功判定为:
if !result.Success && result.Code != 0 && result.Code != 200 { ... }
return &result.Data
判定偏脆,某些异常响应下会放行一个零值 Data,导致 result.url 为空、正文里被插入空图片链接。
3. 后端真实错误被吞
uploadImageFiles 的 catch 用固定文案 上传图片失败 覆盖了后端的具体错误(如「API 密钥未配置」、key 过期等),用户无法判断失败原因。
触发条件 / 影响范围
目前编辑器图片仅能从文件对话框单张选入(无粘贴 / 拖拽入口),批量路径暂时走不到,现状影响有限。但属于明确的健壮性隐患——一旦后续补上粘贴 / 多选,问题会被放大。
建议
- 逐张「上传成功即插入」,单张失败只提示该张、不影响已成功的;或失败时回滚已上传项。
- 收紧成功判定,并在插入前校验 URL 非空。
- 把后端 error message 透传给 toast,替代笼统文案。
开启图床后,编辑器插入图片的逻辑有几处健壮性问题。
1. 批量上传中途失败 → 已传图成孤儿、正文一张都不插入
frontend/src/views/articles/editor/composables/useEditorHelper.ts的uploadImageFiles在启用图床时是「先循环把所有图片传到 S.EE,全部传完再统一插入正文」。若其中某张上传抛错:
2. 可能在正文插入空
![]()后端
backend/internal/service/image_hosting_service.go的Upload成功判定为:判定偏脆,某些异常响应下会放行一个零值
Data,导致result.url为空、正文里被插入空图片链接。3. 后端真实错误被吞
uploadImageFiles的 catch 用固定文案上传图片失败覆盖了后端的具体错误(如「API 密钥未配置」、key 过期等),用户无法判断失败原因。触发条件 / 影响范围
目前编辑器图片仅能从文件对话框单张选入(无粘贴 / 拖拽入口),批量路径暂时走不到,现状影响有限。但属于明确的健壮性隐患——一旦后续补上粘贴 / 多选,问题会被放大。
建议