我试图将.kml文件上传到WordPress。我有一点工作,但最新的WordPress更新似乎打破了它。
我正在使用此功能
function my_myme_types($mime_types){
$mime_types['kml'] = 'application/vnd.google-earth.kml+xml'; //Adding kml extension
$mime_types['kmz'] = 'application/vnd.google-earth.kmz'; //Adding kmz files
return $mime_types;
}
add_filter('upload_mimes', 'my_myme_types', 1, 1);
上传时出现此错误
"抱歉,出于安全原因,不允许使用此文件类型。"
答案 0 :(得分:11)
要正确支持KML / KMZ文件,您必须使用text/xml
和application/zip
,因为WordPress会将声明的MIME类型与“真实”检测到的MIME类型进行比较(请参阅函数wp_check_filetype_and_ext
中的wp-includes/functions.php
了解详情)
function add_upload_mimes($mimes) {
$mimes['kml'] = 'text/xml';
$mimes['kmz'] = 'application/zip';
return $mimes;
}
add_filter('upload_mimes', 'add_upload_mimes');
更新(2019-02-28):检测到kml为text / xml而不是application / xml,相应地更改代码应解决以下评论中描述的问题。
答案 1 :(得分:1)
这可能与最近的wordpress更新后有关:
尝试上传xml文件并获得相同的错误消息,更新 upload_mimes WordPress过滤器挂钩不起作用,并且使用了某些文件上传或mime类型管理插件,而这些插件实际上使用了相同的过滤器挂钩
解决方案:更新wp-config.php并添加以下行
定义('ALLOW_UNFILTERED_UPLOADS',true);
然后在上传文件后删除此行,以避免潜在的安全风险