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 验证的主要内容,如果未能解决你的问题,请参考以下文章