php检验文件类型
基于文件扩展名的类型检验
这一种方式很好实现,也就是取出文件的扩展名就可以了,且这是效率最好的,这种方式很不安全,如出现没有扩展名的文件怎么办呢?
这在windows上面很少出现没有扩展名的文件,但是在linux上面没有扩展名的文件很多,所以单独以扩展名来区分文件的类型不是很合适
php上传文件类型检测-------基于扩展名的文件类型检测
php基于文件签名的文件类型检查
什么是文件签名?
其实第一种文件都有其特定的格式,这样只要检测其特定的内容就可以知道文件的类型,
如果想详细了解文件签名或者文件类型,请参考File format
文件签名一般都在文件的头部,如果你用十六进制方式查看文件,你就可以看到文件的一些签名信息。
如用uestudio以十六进制方式查看zip格式的文件,其文件内容头部有50 4B 03 04这样的十六进制信息。
同理jpg文件状况有FF D8 FF E0 xx xx 4A 46这样的十六进制信息,其实这此十六进制都是表示一些特殊字条。
有位老兄花了不少时间把大部分文件的签名信息都进行了整理,如果要知道文件类型的签名信息,请查看文件签名列表file sigs。
php怎么样验证文件类型?
基于扩展名的文件类型验证很不安全也不准确,在php中可以这样处理
这样处理php文件类型检验是比较准备和安全的,如果有新的文件类型出现,只要把新的文件签名信息放进去就可以了。