用 iPhone 的同事传照片,每次都被提示不允许此文件类型,同一张图在相册里看完全正常,换成微信发过来的就能传。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,iOS 默认以 HEIC 格式存储,上传时带的是原始扩展名,服务端允许列表里没有它,图像库也解不了这个编码,只能在客户端先转一道。
「HEIC 上传」这类改动最怕改一半,回滚脚本先准备好,再动生产。报错里带路径的,先去看那个路径在不在、权限对不对。
heif-convert a.heic a.jpg convert a.heic -quality 90 a.jpg
同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
具体做法是,前端选完图片以后先统一转成 JPEG 格式再发给后端;服务端补上这种格式的解码支持 作为第二道兜底;原始文件只做留档 不对外输出可以访问的地址。
最后用这个标准收尾,用 iPhone 的同事上传不再报错,前台显示的是转换后的 JPEG 图片,清晰度没有明显损失。
