const res = await fetch(uploadUrl, { method: 'POST', body: fd });
if (!res.ok) {
showTip(res.status === 413 ? '图片超过 8MB' : '上传失败 ' + res.status);
return;
}
传一张 12MB 的截图,进度条走到 100% 就停住,界面没有任何提示,控制台里只有一行 Failed to load resource: 413。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:上传用的是 fetch,只写了 then 分支,413 走的是 response.ok 为 false 那条路,被当成成功继续往下解析。客服窗口在 iframe 里,跨域拿不到响应体,错误又被 catch 吞成一句日志。
「聊天附件上传无提示」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。监控和日志的时间要对上,时区不一致会多绕很大一圈。
临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
处理上按这个顺序:先判断 response.ok,非 2xx 一律按失败处理,把状态码带回界面;按 413 单独给文案,提示压缩或者换小图,别只说上传失败;服务端上限和前端提示共用一份配置,改的时候两边一起改。
确认没问题再收工,传大图时窗口里直接出现「图片超过 8MB」,换小图能正常发出去。
