Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查上传的文件类型是否为pdf_Php_Html_Pdf - Fatal编程技术网

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

Php 如何检查上传的文件类型是否为pdf,php,html,pdf,Php,Html,Pdf,可能重复: 我在我的网站上有上传功能,只允许上传pdf。如何检查上传的文件是否只有pdf。就像getimagesize()检查图像文件一样。 是否有任何方法可以检查文件是否为pdf格式。 我的代码如下所示 $whitelist = array(".pdf"); foreach ($whitelist as $item) { if (preg_match("/$item\$/i", $_FILES['uploadfile']['name'])) { } else {

可能重复:

我在我的网站上有上传功能,只允许上传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\u to
mysql\u prep
是我定义的函数。
但是mime类型可以使用头来更改。那么有没有办法检查文件是否为原始pdf?

您可以使用PHP的头来检查文件的mime类型。如果返回类型为“application/pdf”,则应为pdf

文件信息函数是在PHP5.3中添加的,但在此之前,您可以使用该函数。

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

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


如果
,为什么有空的
?请为你的代码使用适当的缩进,否则会发生不好的事情。我只是想检查它是否有马赫数…?简单地做:
如果(!preg_match(“/$item\$/I”),$_FILES['uploadfile']['name']){重定向到('index.php”)}
这不是答案@PeeHaa..我已经做过了…如何检查pdf条目,就像getimagesize()检查图像文件的函数不是答案,而是注释。我正在告诉您如何改进代码:)但如果我有一个php文件并编写(header:type=“application/pdf”)……那么它也会向我显示相同的情况,这是正确的,但可能性较小,这取决于这有多重要+1,这是这里唯一正确的答案。file info函数提供了一种方法来获得true*我想从我的问题中解决的文件的mime类型…你告诉我的事情我已经检查过了…你有什么答案吗应该注意的是,
mime\u content\u type()
函数,并且在PHP7中明确提到。这是一个非常昂贵的解决方案!:这基本上不是MIME类型检查也可以做的,但是以一种更便宜的方式吗?好的一点,这基本上就是MIME类型检查可能已经做的事情。但是,如果您确实想更确定它是一个有效的PDF文件(并且您不介意额外的处理时间),您可以扫描该文件以查找其他预期结构,例如文件末尾的PDF“%%EOF”标记。(假设这比mime检查做的更多)但请注意。@PeeHaa哦,谢谢你。。。我需要更新我的知识:X@PeeHaa你能更新你的回复吗?这一点并没有遭到反对。(见链接)也许它又复活了?这一变化已在年恢复。PHP的bug站点目前还没有加载,但是一旦它再次启动,您就可以查看它的原因@达普雷兹杰
mime_content_type('file.ext');