使用PHP检查上传时的mime类型的文件。 mime_content_type,fileINfo,linux文件不可用

时间:2011-10-05 21:42:57

标签: php linux mime-types

我整天都在网上搜索,无法找到解决这个问题的合理方法。

我正在尝试帮助客户将一个从其他主机移动到godaddy共享主机的网站重新组合在一起。

该站点使用CakePHP构建,并且一行使用mime_content_type,该服务器上不可用。既不是FILE命令也不是fileinfo。

我尝试了upgrade.php替换,但它失败了大概是因为找不到mime_magic。

由于FILE不可用,PEAR解决方案失败。

有什么解决方法吗?

此处唯一的目标是确定文件是否为PDF,而不是基于扩展名。

PHP Version 5.2.17

非常感谢。

1 个答案:

答案 0 :(得分:2)

PDF文件始终以%PDF-开头,因此您可以读取前4个字节,并检查它们是否等于。

function is_pdf($fn) {
  $f = fopen($fn, 'rb');
  if ($f === false) return false;
  $res = fread($f, 5) == '%PDF-';
  fclose($f);
  return $res;
}

然而,仅download MIME魔术文件可能更容易,并将其名称赋予finfo_open(php 5.3+)或配置mime_magic.magicfile并使用mime_content_type