Wordpress:按 MIME 类型限制文件上传

Wordpress: Restrict file uploads by MIME type

我在 WP 插件中构建了一个简单的上传文件。在插件 function.php 文件中,我添加了以下过滤器,它将 .xml 文件类型添加到 WP 允许的 MIME 类型列表中:

add_filter('upload_mimes','add_custom_mime_types');
function add_custom_mime_types($mimes){
    return array_merge($mimes,array (
        'xml' => 'application/xml'
    ));
}

我的问题是,如何检查上传文件的 MIME 类型,如果 MIME 类型与主 MIME 类型数组中存在的那些 MIME 类型不匹配,则拒绝上传到服务器。为了完整起见,这里是处理文件上传的代码:

if((isset($_POST["submit"])) && (!empty($_FILES['uploadedfile']))){

    if($fileType !== "xml"){
        $errorType = "Incorrect file type";
        }
    if(file_exists($fullPath)){
        $errorType = "File already exist";
        }
    if($_FILES['uploadedfile']['size'] > 100000){
        $errorType = "File is too large";
        }
    if(!empty($errorType))
        {
    echo "Error $errorType";
        }
    else{
        if(rename($_FILES['uploadedfile']['tmp_name'], $fullPath)){
            echo "The file ".  basename( $_FILES['uploadedfile']['name']). " has been uploaded";
            }
        } 
    }

我需要添加一个 if 语句来根据 WP 允许的 MIME 类型检查上传的 MIME 类型。我不确定如何做到这一点。问候。

您使用 get_allowed_mime_types 在 Wordpress 中获取允许的 MIME 类型:

$allowed = get_allowed_mime_types($user); 用户可选

您使用 mime_content_type 在 PHP 中获取文件的 MIME 类型:

$mime = mime_content_type($fullPath);

检查是否允许 MIME:

$exists = in_array($mime, $allowed);