WordPress 无法上传 SVG 图片怎么办?
更新于:
在 WordPress 后台上传 SVG 图片时,很多人会遇到这样的提示:
Sorry, this file type is not permitted for security reasons.
中文环境里通常会显示为:
抱歉,出于安全原因,不允许上传此文件类型。
出现这个问题不是网站坏了,而是 WordPress 默认禁止上传 SVG 文件。
原因很简单:SVG 不是普通图片,它本质上是一种 XML 文件,里面可能包含脚本代码。如果不做安全处理就允许上传,可能带来 XSS 等安全风险。所以 WordPress 默认会拦截 SVG 上传。
解决方法一:使用 Safe SVG 插件
最推荐的方式是安装 Safe SVG 插件。
安装并启用插件后,WordPress 就可以上传 SVG 图片了。相比直接改代码,插件的好处是:它不仅允许上传 SVG,还会对 SVG 文件做安全清理,更适合普通网站和客户网站使用。
解决方法二:添加代码允许 SVG 上传
如果你熟悉代码,也可以把下面代码添加到主题的 functions.php 文件,或者放进自定义插件里:
function allow_svg_upload($mimes) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
}
add_filter('upload_mimes', 'allow_svg_upload');
不过要注意:这段代码只解决“允许上传”的问题,并不会自动清理 SVG 文件里的潜在风险。如果网站有多个用户,或者允许别人上传文件,还是建议用插件方案。
不建议直接关闭上传限制
有些教程会建议开启 ALLOW_UNFILTERED_UPLOADS,但这个做法风险比较高,因为它会放宽更多文件类型限制,不只是 SVG。
一般网站不建议这么做。
总结
WordPress 无法上传 SVG 图片,主要是因为系统默认安全策略限制。
如果只是自己维护的网站,可以用代码开启;如果是正式站点、客户网站或多人协作网站,更推荐使用 Safe SVG 插件,既方便,也更安全。