我在我的网站上传了功能,只允许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_to
和mysql_prep
中的是我定义的函数。 但是mime类型可以使用headers更改。那么有没有办法检查文件是orignal pdf?
答案 0 :(得分:16)
您可以使用PHP File Info Functions检查文件的MIME类型。如果它以“application / pdf”类型返回,那么它应该是PDF。
文件信息功能是在PHP 5.3中添加的,但在此之前,您可以使用mime_content_type功能。
答案 1 :(得分:9)
mime_content_type('file.ext');
答案 2 :(得分:7)
通过打开文件并读取前几个字节的数据来查找PDF magic number。大多数文件都有特定格式,PDF文件以%PDF开头。
您可以检查文件的前5个字符,如果它们等于“%PDF-”,则可能是真正的PDF(但是,这并不能明确证明它是PDF文件,因为任何文件都可以从这5个字符开始)。正确PDF文件中的后4个字符包含版本号(即1.2)。