上传表单提示"不支持的文件格式",而你的文件是 .webp。解法如下:用我们的 WebP 转 JPG 工具把它转成 JPG——工具在你的浏览器里运行,不会上传到我们这里,大约一分钟后你就有一个能被接受的文件。被拒不代表你的文件坏了,它代表网站的上传流水线太老。下面讲清楚到底发生了什么,以及各种变体怎么处理。
网站为什么拒收 WebP
上传流水线天生保守。网站接受你的图片后,服务器必须解码它——缩放、生成缩略图、安全扫描。解码靠的是网站多年前安装的库,而格式白名单也是那时候写下的。常见原因有四个:
来自 WebP 之前的格式白名单。 表单只接受 .jpg, .jpeg, .png, .gif,因为 2014 年有人在 CMS 配置里敲下了这行字,此后再没人碰过。这是大多数情况——老 WordPress 站点、论坛程序、政府和学校门户、电商上架工具。
服务器端图像库没有 WebP 支持。 老版本的 GD 和一些 ImageMagick 编译时没带 WebP。就算表单收了文件,后面的处理环节也解不开,所以网站干脆提前拒绝。
安全扫描。 正常的上传处理器会在保存任何东西之前,对照允许清单检查文件的 magic bytes。WebP 的 RIFF....WEBP 签名根本不在旧清单上。
表单的 accept 属性。 有时拒绝发生在你的浏览器里,什么都还没发出去:文件选择器把清单之外的扩展名全部置灰。同一张白名单,只是离你更近。
WordPress 值得单独提,因为它驱动着网络的巨大份额。它的允许类型存在一张 MIME 白名单里,WebP 上传直到 2021 年的 WordPress 5.8 才被官方支持——而且前提是托管服务器的图像库能解码。任何更老的安装,或者跑在老 GD 构建上的新安装,都会拒收。如果你是网站的管理员,修复是一行过滤器的事。如果你只是想传张照片上去,转换才是更快的那扇门。
这一切底下的共同模式是:网络积极地分发 WebP,因为浏览器爱它(网页图片格式指南解释了原因),而同一张网络的上传一侧还活在 2014 年。你正站在这两者之间的缝隙里。
解法:转成被接受的格式
把 WebP 拖进 WebP 转 JPG 工具,下载 JPG,上传它。转换完全在你的设备上进行——文件不去我们的服务器,也不去任何人的服务器——而结果能通过有史以来写过的所有白名单,因为每张名单上都有 JPG。
如果转换之后报错信息抱怨的是别的东西——"文件太大"、"尺寸超出限制"——格式只是第一道门。体积问题有专门的工具:我们的图片缩放工具以同样的方式在本地把文件缩小。
转 JPG 还是 PNG
先看报错信息——如果表单列出了接受的格式,99% 的情况下 JPG 和 PNG 都在上面。然后按内容选:
- 照片、产品图、一切来自相机的内容 → JPG。 文件更小,而上传体积限制是真实存在的。JPG 不可能有透明度,但照片本来也没有。
- 截图、logo、图形、一切带文字或透明的内容 → PNG。 无损的边缘和真正的 alpha 通道;用 WebP 转 PNG 工具,透明背景完整存活。
拿不准的照片一律转 JPG。完整的画质说明见 如何把 WebP 转成 JPG。
批量场景:上架和目录
电商卖家天天撞墙——供应商发来一整个文件夹的 WebP 产品图,而平台只收 JPG。用桌面应用一次转一张,二十张照片就是一个下午。浏览器转换器一次吃下整个文件夹:目录拖进去,等它跑完,全部打包成一个 ZIP 下载。文件名保留,你的 SKU 命名规则安然抵达。
相关的问题,别的门
如果 WebP 文件根本到不了网站那一步——在你自己电脑上都打不开——那是同一个支持缺口的桌面版,见 为什么打不开 WebP 文件。如果你的下载文件夹因为 Chrome 不停保存而堆满 WebP,如何阻止 Chrome 保存 WebP处理的是源头那一侧。
至于此刻正在拒收你的那个表单:转换文件,再传一次——报错信息要么换成抱怨别的,要么干脆消失。多半是后者。