我如何检查文件是jpeg,pdf还是tiff?我的意思是实际检查,而不仅仅是从mime类型和文件扩展名。
我可以访问原始文件数据(此检查是上传者的一部分),我需要验证文件是jpeg,pdf还是tiff。我假设我必须检查文件中的某些标题,但我不知道要查找什么以及从哪里开始。
答案 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);