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);
我在 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);