在 PHP 中确定不带 MIME 或扩展名的文件类型


Determining file type in PHP without MIME or extension

我有一个接受文件上传的PHP网站,我希望能够根据文件类型执行某些操作。但我不想相信浏览器说的文件类型,而是宁愿阅读文件的标题来确定它。PHP 中是否有任何库?或者这是我需要从头开始写的东西吗?

使用为您执行此操作的finfo函数。

以前您可以使用 mime_content_type 函数,现在已弃用此功能,因此,取而代之的是使用

$finfo = new finfo(FILEINFO_MIME);
$type  = $finfo->file('path/filename');

文件信息功能可以给你文件类型

 $finfo = finfo_open(FILEINFO_MIME_TYPE);
 echo finfo_file($finfo, $filename);

它可以给出这样的输出

text/html
image/gif
application/vnd.ms-excel

PHP 中有一个名为 fread() 的函数,可用于读取二进制文件:

http://php.net/manual/en/function.fread.php

您可以使用它来读取文件的前几个字节,以获取标头并以这种方式确定文件类型。

>curl_getinfo应该对 http://php.net/curl_getinfo 有所帮助与此问题相关:使用 cURL 和 php 获取外部文件的 MIME 类型