问题描述

「在这里插入搜索引擎」 对于这一点来说是相当无用的 – 我已经看过 wp-includes/functions.phpwp-admin/includes/file.php 等,但没有找到我所获得的行为的原因。

我正在运行多站点,当我上传.doc 或.pdf 时,我没有问题。当我上传一个.ppt – 不管实际的文件名或 mimetype(即一个.ppt 重命名为.txt,一个.txt 重命名为.ppt) – 我被告知 「对不起,此文件类型是不允许为安全原因」 还有一点其他的解释。

我需要修改 mimes 表,添加一个覆盖 (如果是这样,这是什么语法),还是在我的 Apache conf 中?我已经做了一些有趣的搞笑,尝试在几个地方锁定东西,可能阻止.pot 文件。

最佳解决方案

在多站点网络管理设置中挖掘时发现它:有一个名为 「上传文件类型」 的设置 (在数据库中是 meta_key = wp_sitemeta 表中的”upload_filetypes”),其中包含允许的文件类型列表。将”ppt” 添加到列表中可以上传。

次佳解决方案

WordPress 似乎没有任何地方可以更改这些设置,而不是通过在数据库中执行此操作。但是你试过使用这个代码吗?

<?php
add_filter('upload_mimes', 'custom_upload_mimes');
function custom_upload_mimes ( $existing_mimes = array() ) {
    // add your extension to the array
    $existing_mimes['ppt'] = 'application/vnd.ms-powerpoint';
    // or: $existing_mimes['ppt|pot|pps'] = 'application/vnd.ms-powerpoint';
    // to add multiple extensions for the same mime type
    // add as many as you like
    // removing existing file types
    unset( $existing_mimes['exe'] );
    // add as many as you like
    // and return the new full result
    return $existing_mimes;
}
?>

在您的主题功能文件中使用该代码。过滤器 upload_mimes 显然允许您设置其他允许的上传扩展,并且还可以正确设置扩展名 mime 类型以用于 WP 。加上这样做的好处是它的升级安全。

如果您需要一个 mime 类型的列表:http://www.w3schools.com/media/media_mimeref.asp

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。