基于OOP的语法来获取文件的MIME类型

时间:2014-02-25 10:13:47

标签: php oop file-upload upload

我想允许用户将文件上传到我的服务器,我真的不知道这个语法的错误

// EDITED

$temp = "file.pdf";
$fileInfo = new finfo;
$getType = $fileInfo->file($temp, FILEINFO_MIME);

$fileExt = array( 'jpg' , 'jpeg' , 'gif' , 'png' , 'zip' , 'rar' , 'pdf' , 'doc' , 'rtf' , 'xls' , 'ppt' , 'odt' , 'ods' );
$ext = strtolower(  substr(  strrchr($temp, '.')  ,1)  );
if(!in_array($ext, $fileExt)) {
    echo "Ext not allowed"
}else {
    if ($getType == "application/pdf" || $getType == "image/png") {
        echo "Ok " .$getType;
    }else {
        echo "No " .$getType;
    }
}

输出:无申请/ pdf;

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

使用mime类型是不安全的。可以手动编码具有不合适扩展名的伪造类型的MIME邮件(例如“.php”)。

请检查扩展程序。

$parts = explode('.',$filename);
$ext = array_pop($parts);
if( $ext !='pdf' && $ext !='png')
    return false;

答案 1 :(得分:1)

我找到了解决方案,可以帮助别人。

使用:

$fileInfo = finfo_open(FILEINFO_MIME_TYPE);

$getType = finfo_file($fileInfo, $temp);

而不是:

$fileInfo = new finfo;

$getType = $fileInfo->file($temp, FILEINFO_MIME);