验证多个上传文件的MIME类型

时间:2014-05-05 08:50:06

标签: php mime-types

首先,我想说我对PHP很新,特别是关于如何制作多个上传脚本的问题。我遇到的问题是如何验证MIME类型的文件。

根据我的研究 - 几乎每个消息来源都会检查MIME类型。我知道这是因为$ _FILE变量是用户确定的,可能导致上传坏文件。

当我尝试检查MIME类型时,我无法让它工作。该脚本应该只接受某些文档文件,没有MIME检查脚本工作正常。问题是它不验证任何文件类型,即使它是我在数组中包含的文件类型,并打印$ errors变量。

这是代码:

foreach ($_FILES['ufile']['name'] as $f => $name) {

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES['ufile']['tmp_name']);
$ok = false;

switch ($mime) {
    case 'application/pdf':
        $ok = true;
        break;
    case 'application/msword':
        $ok = true;
        break;
    case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':
        $ok = true;
        break;
    default:
        $ok = false;
        break;
}

    if ($_FILES['ufile']['error'][$f] == 4) {
        continue;
    }          
    if ($_FILES['ufile']['error'][$f] == 0) {
        if ($_FILES['ufile']['size'][$f] > $max_file_size) {
            $errors[] = 'message';
            continue;
        }
        elseif($ok == false){
            $errors[] = 'message';
            continue;
        }
        else{
            if(move_uploaded_file($_FILES["ufile"]["tmp_name"][$f], "path".$name))

            'queries and stuff.';
            }
    }
}

知道问题可能是什么?一组新的眼睛可能会看到一些我应该看到或改变过的明显的东西。

提前致谢!

0 个答案:

没有答案