如何检查上传的文件类型是pdf

时间:2012-06-14 18:23:40

标签: php html pdf

  

可能重复:
  How to check file types of uploaded files in PHP?

我在我的网站上传了功能,只允许pdf上传。如何检查上传的文件只是pdf。就像getimagesize()一样来查看图像文件。 有没有办法检查文件肯定是PDF格式。 我的代码如下所示。

$whitelist = array(".pdf");

foreach ($whitelist as $item) {

    if (preg_match("/$item\$/i", $_FILES['uploadfile']['name'])) {

    }
    else {

        redirect_to("index.php");
    }
}

$uploaddir='uploads/';

$uploadfile = mysql_prep($uploaddir . basename($_FILES['uploadfile']['name']));

if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile)) {

    echo "succussfully uploaded";
}
redirect_tomysql_prep中的

是我定义的函数。 但是mime类型可以使用headers更改。那么有没有办法检查文件是orignal pdf?

3 个答案:

答案 0 :(得分:16)

您可以使用PHP File Info Functions检查文件的MIME类型。如果它以“application / pdf”类型返回,那么它应该是PDF。

文件信息功能是在PHP 5.3中添加的,但在此之前,您可以使用mime_content_type功能。

答案 1 :(得分:9)

mime_content_type('file.ext');

mime_content_type()

答案 2 :(得分:7)

通过打开文件并读取前几个字节的数据来查找PDF magic number。大多数文件都有特定格式,PDF文件以%PDF开头。

您可以检查文件的前5个字符,如果它们等于“%PDF-”,则可能是真正的PDF(但是,这并不能明确证明它是PDF文件,因为任何文件都可以从这5个字符开始)。正确PDF文件中的后4个字符包含版本号(即1.2)。