如何读取PHP上传文件的标题?

kus*_*tus 5 php file-upload header

我们可以在PHP中读取文件的头信息来确定上传的文件类型吗?

我不想依赖$_FILES['control_name_from_client']['type'].我们知道这个属性通过读取上传文件的扩展名来确定文件类型.

如果什么用户重命名,比如test.jpg放在 - > TEST.XLS.在这种情况下,$_FILES['control_name_from_client']['type']将显示类型为application/vnd.ms-excel而不是image/jpeg.如果必须执行代码来读取XLS文件以获取某些处理的数据,这很自然会产生问题.

有什么建议吗?

lor*_*o-s 7

试试finfo_file().你必须通过文件路径调用它.例:

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES['control_name_from_client']['tmp_name']);
finfo_close($finfo);
Run Code Online (Sandbox Code Playgroud)

你需要Fileinfo扩展名.正如PHP手册所说:

此模块中的函数尝试通过查找文件中特定位置的某些魔术字节序列来猜测文件的内容类型和编码.虽然这不是一种防弹方法,但使用的启发式方法做得非常好.