检查文件是JPEG,PDF还是TIFF

时间:2013-01-09 15:04:57

标签: php file

我如何检查文件是jpeg,pdf还是tiff?我的意思是实际检查,而不仅仅是从mime类型和文件扩展名。

我可以访问原始文件数据(此检查是上传者的一部分),我需要验证文件是jpeg,pdf还是tiff。我假设我必须检查文件中的某些标题,但我不知道要查找什么以及从哪里开始。

5 个答案:

答案 0 :(得分:4)

Exif_imagetype对此非常有用:http://us2.php.net/manual/en/function.exif-imagetype.php

它扫描文件的初始字节以确定图形类型。它支持大量图形格式(如果无法识别格式,则返回false)。

答案 1 :(得分:1)

如果您有权访问原始文件,则可以检查其magic number的文件头。这个数字定义了文件的类型。

答案 2 :(得分:1)

您需要实现字节序列测试。

Here是检查最常见图像格式的字节序列的指南。

答案 3 :(得分:0)

这可能很棘手,因为所有文件都必须遵循某种ISO标准,并且存在“魔法数字”,这基本上是格式的“标题”。

我发现了这个关于不同签名的维基页面:http://en.wikipedia.org/wiki/List_of_file_signatures

因此,在最好的情况下,您只需要验证这些第一个字节。

答案 4 :(得分:0)

要检查图像类型,您可以使用exif_imagetype功能。 for pdf:你必须打开文件并读取第一个字节并查看它是否以'%PDF'

开头
$fp = fopen($pdf, 'r');
if(fgets($fp, 4) == '%PDF')
{ 
    ... is pdf
}
fclose($fp);