上周接了个活儿,给一个 PHP 聊天系统加图片上传功能。需求看着简单:支持 jpg、png、webp,前后台都要能传。
结果搞了整整两天。
第一个坑是格式判断。前端用 JS 检查了文件类型,但有人直接改后缀名绕过,后端必须再验一次 MIME 类型。漏了这步,上传个伪装成图片的 PHP 文件就完蛋了。
第二个坑是大小限制。Nginx 默认只让传 1MB,改完配置重启才生效。用户传了张 4K 截图,直接 413 报错,我还以为是代码问题,排查了半天。
第三个坑最无语。手机端上传图片后,消息列表不自动滚动到底部,新图片被压在下面看不见。最后加了句 scrollTop = scrollHeight 解决,但动画效果太生硬,还得再调。
现在能用了,但回头看这个系统的代码结构,耦合度太高,改一个地方牵出三个 bug。以后接这种老项目维护,得先评估值不值。
—— 2026.6.13