所以,我目前使用了一些不同的方法来检查mime类型。用户使用表单上传文件,我抓取mime类型,如果是应用程序/ zip,我允许它,如果是其他任何东西,我否认它。问题是某些东西(我假设的浏览器)正在将mime类型更改为“application / octet-stream”
我想知道如何在表单上传时验证文件是.zip。
代码:
$name = strtolower(end(explode('.', $filename)));
$accepted_types = array('application/zip', 'application/x-zip-compressed', 'multipart/x-zip', 'application/x-compressed');
foreach($accepted_types as $good_type) {
if($good_type == $type) {
$okay = true;
break;
} else {
$okay = false;
}
}
答案 0 :(得分:2)
$type = mime_content_type($filename);
答案 1 :(得分:2)
FWIW,您可以使用bin2hex
获取魔术字节。根据维基百科(https://en.m.wikipedia.org/wiki/Magic_number_(programming)#Magic_numbers_in_files),拉链有前2个十六进制字节50
4B
$zip=file_get_contents("somefile.zip");
echo strtoupper (substr(bin2hex($zip),0,2)); //504B