首先,我想说我对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.';
}
}
}
知道问题可能是什么?一组新的眼睛可能会看到一些我应该看到或改变过的明显的东西。
提前致谢!