iPhone 直接上传的照片在裁剪接口返回 415,安卓上传的 JPG 正常,用户侧只看到上传失败,重试三次都一样。乍看像缓存或者权限的锅,追下去往往不是。

heif-convert IMG_0042.HEIC out.jpg
file out.jpg

追下去是这么回事:裁剪服务只注册了 JPEG、PNG、WebP 三种解码器,HEIC 没有对应实现。前端也没有在选图后转码,原文件直接进了队列。

「HEIC 不支持」这类改动最怕改一半,回滚脚本先准备好,再动生产。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。别只看报错的最后一行,往上看几行,真正的起因通常在上面。

同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。

具体做法是,前端选图后先转成 JPEG 再上传,原图另存一份;服务端补 HEIC 解码依赖,并限制单张最大边长;对 415 的请求单独记日志,确认没有漏掉的格式。

验收就看一点,iPhone 上传的照片能生成缩略图,接口不再返回 415。

作者 9823189