将.kml文件上传到WordPress

时间:2017-02-15 01:40:33

标签: wordpress kml

我试图将.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);

上传时出现此错误

"抱歉,出于安全原因,不允许使用此文件类型。"

2 个答案:

答案 0 :(得分:11)

要正确支持KML / KMZ文件,您必须使用text/xmlapplication/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);

然后在上传文件后删除此行,以避免潜在的安全风险