美好的一天!
此pdf文件的代码返回错误的类型。对于另一个pdf文件,此代码很好。
$finfo = @finfo_open(FILEINFO_MIME);
$mime = @finfo_file($finfo, 'upload/123.pdf');
finfo_close($finfo);
print_r($mime);
这是答案: 应用/八位字节流; charset = binary
这是我需要的: 应用/ pdf
这是pdf文件 https://dropmefiles.com/x6slw
谢谢!
答案 0 :(得分:0)
我很好奇,下载了文件,是的,在运行代码时,它没有给我application/pdf
而是给了application/octet-stream; charset=binary
由于finfo函数依赖文件签名(字节)来查找文件MIME类型,所以我猜了-签名一定有问题,因此我在十六进制查看器下对其进行了分析,这就是我发现的内容< / p>
要正确识别,PDF签名应该从一开始就出现,但是在您的文件中它偏移了4个字节。由于finfo找不到正确的MIME类型,因此回退到其通用“ application / octet-stream; charset = binary”
那么如何解决?
我必须承认php的内置函数非常适合执行常规任务,但是有时在这里和那里,您可能会遇到那些“边缘情况”,这是第三方开放源代码库出现的地方,在这里,我发现可以为您修复它。 / p>
PhpMimeType :https://github.com/katzien/PhpMimeType
$type = \MimeType\MimeType::getType('123.pdf');
print_r($type); //"application/pdf"
// Yay!