带 8MB 截图的反馈提交后,页面提示成功,后台记录里附件字段是空的,Network 里那个请求返回 413。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
client_max_body_size 10m; # php.ini: upload_max_filesize = 10M, post_max_size = 12M
Nginx 的 client_max_body_size 还是默认 1MB,请求在进 PHP 之前就被拒了。前端只看 fetch 有没有抛异常,413 被当成正常响应。这一点先确认清楚,后面就不用反复试。
「反馈附件上传失败」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。
具体做法是,把 client_max_body_size 调到 10m,同时确认 PHP 的 upload_max_filesize 和 post_max_size;前端检查 response.ok,非 2xx 弹出失败原因;用 1MB、8MB、12MB 三个文件各传一次。
改完照着核一遍,8MB 附件能传上去并在后台可下载,12MB 返回明确的超限提示。
