在php中发现文件文件类型的最佳方式是什么?我听说浏览器可能会被欺骗,那么这样做的更好方法是什么?在php中识别文件类型的最佳方式
6
A
回答
10
您可以使用finfo_file
<?php
echo finfo_file(finfo_open(FILEINFO_MIME), "foo.png");
?>
3
我想你的意思finfo_file()从php.net例发现MIME类型
:
<?php
$finfo = finfo_open(FILEINFO_MIME); // return mime type ala mimetype extension
foreach (glob("*") as $filename) {
echo finfo_file($finfo, $filename) . "\n";
}
finfo_close($finfo);
?>
5
看 “幻数”。文件的前几个字节通常标识它是什么类型的文件。例如,GIF的几个字节为47 49 46 38 37 61或47 49 46 38 39 61,GIF89a或GIF87a为ASCII。还有很多其他的“神奇数字”。见http://en.wikipedia.org/wiki/Magic_number_(programming)#Magic_numbers_in_files
编辑:我相信这比PHP上的MIME函数更可靠。
2
您不能信任浏览器返回的Content-Type。它基于文件扩展名,可以很容易地被欺骗。
由于stalepretzel提到它,猜测文件内容类型的最好方法是使用幻数。如果你的服务器是Unix和Linux机器上运行,你可以使用这个功能:
<?php
function get_file_type($file) {
if(function_exists('shell_exec') === TRUE) {
$dump = shell_exec(sprintf('file -bi %s', $file));
$info = explode(';', $dump);
return $info[0];
}
return FALSE;
}
?>
Usage: $file_type = get_file_type('my_file_name.ext');
PD:检查/usr/share/magic.mime到更多的信息。
+0
请注意,使用shell_exec是一个潜在的安全问题 – josh123a123 2016-08-08 20:52:00
相关问题
- 1. 在Java中识别特定文件类型的最佳方法是什么?
- 2. 获取文件MIME类型的最佳方式在php
- 3. 识别测试类的最佳方法?
- 4. 识别Android设备的最佳方式
- 5. 获取文件MIME类型的最佳方式PHP
- 6. 在Windows中识别unicode编码文本文件的最佳方式是什么?
- 7. 识别WPF控件的最佳方法?
- 8. 在Microsoft SQL查询中识别组的最佳方式
- 9. 在Swift中识别iPhone UID的最佳方式是什么?
- 10. ExpressJS识别文件类型
- 11. 识别Windows中的文件类型
- 12. C#,最快(最佳?)在目录阵列中识别重复文件的方法
- 13. 唯一标识类型的最佳方式
- 14. 最佳的方式在PHP
- 15. 在java中确定文件的MIME类型的最佳方法?
- 16. 以编程方式识别PDF类型
- 17. 的最佳方式基于类型
- 18. 在codeigniter中处理大型js文件的最佳方式
- 19. 什么是在PHP中创建XLS文件的最佳方式
- 20. 在PHP中包含文件的最佳方式是什么?
- 21. 在php中缓存文件的最佳方式是什么?
- 22. 构建识别车牌模型的最佳方法(ALPR)
- 23. 类不被识别的PHP文件
- 24. 的最佳方式 - PHP 5.5
- 25. 编译器不识别实现文件中的类成员函数类型,但在接口文件中识别
- 26. ASP.Net MVC - 识别返回用户的最佳方式
- 27. 什么是做基本号码识别的最佳方式?
- 28. 别名表达式的最佳方式
- 29. 通过PHP动态识别子域名的最佳方式是什么?
- 30. 什么是读取单个类中的大型XML文件的最佳方式
请注意,此方法有它自己的问题(即返回空或不明确的字符串)。 – Sampson 2009-01-19 15:01:35