PHP 7 Mime 和 PDF 验证
Posted
技术标签:
【中文标题】PHP 7 Mime 和 PDF 验证【英文标题】:PHP 7 Mime and PDF validation 【发布时间】:2019-09-10 02:55:25 【问题描述】:这在 php 5 中有效,但现在不是:
if (function_exists('finfo_open'))
$mime = finfo_open(FILEINFO_MIME_TYPE);
$mime_type = finfo_file($mime, "FILE-PATH");
if($mime_type == array("application/pdf", "image/jpeg", "image/png"))
echo "file is pdf";
else
echo "file is not pdf";
finfo_close($mime);
【问题讨论】:
里面有问题吗?检查php.net/manual/en/function.mime-content-type.php @Jax297 - 我的问题是为什么现在不行?哪些方面需要改变?您的链接已有七年历史了。 if( in_array($mime_type, array("application/pdf", "image/jpeg", "image/png"))) echo "文件是 pdf"; else echo "文件不是 pdf"; @Jax297 - 仍然得到“文件不是 pdf”。 【参考方案1】:您将字符串与数组进行了比较,这是正确的代码:
if (function_exists('finfo_open'))
$mime = finfo_open(FILEINFO_MIME_TYPE);
if (in_array(finfo_file($mime, 'FILE-PATH'), array('application/pdf', 'image/jpeg', 'image/png')))
echo 'file is pdf';
else
echo 'file is not pdf';
finfo_close($mime);
【讨论】:
我不断收到“文件不是 pdf”。是什么赋予了? mime 命名法最近有变化吗? 刚刚在 PHP 7.2 和 Windows 10 上试过,对我有用。尝试 var_dump() finfo_file() 的结果。如果您使用的是 Linux,您还可以考虑查看您的/etc/mime.types
降级到 5.6.4,现在它就像一个魅力。以上是关于PHP 7 Mime 和 PDF 验证的主要内容,如果未能解决你的问题,请参考以下文章
为啥 php 不能正确检测到 pdf mime 类型(wkhtmltopdf)?