gpt4 book ai didi

php - Finfo_file 返回不正确的类型

转载 作者:行者123 更新时间:2023-12-05 05:12:51 26 4
gpt4 key购买 nike

美好的一天!

我的代码返回此 pdf 文件的类型不正确。对于另一个 pdf 文件,这段代码很好。

    $finfo = @finfo_open(FILEINFO_MIME);
$mime = @finfo_file($finfo, 'upload/123.pdf');
finfo_close($finfo);

print_r($mime);

这是答案:应用程序/八位字节流;字符集=二进制

这是我需要的:应用/pdf

这是pdf文件 https://dropmefiles.com/x6slw

谢谢!

最佳答案

我很好奇,下载了你的文件,是的,在运行你的代码时,它没有给我 application/pdf 而是 application/octet-stream;字符集=二进制

由于 finfo 函数依赖于文件签名(字节)来找出文件 MIME 类型,我猜测 - 签名一定有问题所以我在 Hex-viewer 下分析了它,这就是我发现的

您的文件 enter image description here

普通文件 enter image description here

要正确识别 PDF 签名应该出现在最开始,但在您的文件中它被偏移了 4 个字节。由于 finfo 找不到正确的 MIME 类型,它退回到它的通用 "application/octet-stream; charset=binary"

那么如何解决呢?

我必须承认 php 的内置函数非常适合日常任务,但有时您可能会在这里或那里遇到那些“边缘情况”,这就是第 3 方开源库的用武之地,在这里我发现可以为您修复它。

PhpMimeType : https://github.com/katzien/PhpMimeType

$type = \MimeType\MimeType::getType('123.pdf');
print_r($type); //"application/pdf"
// Yay!

关于php - Finfo_file 返回不正确的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54164881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com