2

我正在使用 5.4 并希望从我的文件句柄中检测 mime 类型。我知道我可以保存一个文件,然后通过传递字符串来使用函数,但我们想避免使用字符串。那么有没有没有任何字符串的方法?

4

5 回答 5

0

不是传递文件句柄或字符串,而是传递一个SplFileObject。使用它,您无需直接调用文件系统函数即可获得对文件的 OO 访问权限。需要路径名的函数仍然可以通过在对象上调用 ->getRealPath() 来使用。

$finfo     = new finfo(FILEINFO_MIME_TYPE); 
$mime_type = $finfo->file( $fileObject->getRealPath() );
于 2013-08-15T20:04:34.733 回答
0

如果您的 PHP 安装支持Fileinfo

$finfo = new finfo;
$mime = $finfo->file($file, FILEINFO_MIME);
finfo_close($finfo);

$file文件的完整路径在哪里。$mime然后将包含它的 MIME 类型,例如 JPG 图像的“image/jpeg”或 PHP 脚本的“text/x-php”。

于 2013-08-15T20:05:54.937 回答
0

采用fileinfo

$fileinfo = finfo_file($finfo, $file, FILEINFO_MIME);     
finfo_close($finfo);

或者,您可以采用面向对象的方式:

$finfo = new finfo();
$file = '/path/to/file/';
$fileinfo = $finfo->file($file, FILEINFO_MIME);
于 2013-08-15T20:06:15.347 回答
0

使用stream_get_meta_data提取uri

$mime = mime_content_type(
    stream_get_meta_data($fh)['uri']
);

$fh我们的文件句柄在哪里

于 2020-01-31T09:07:37.983 回答
-1

AFAIK 文件内容字节中没有任何内容可以明确告知 mime 类型。你有两个选择:

  1. 检测检查字节的内容(实际上,考虑到所涉及的难度和性能影响,我认为这不应该被视为一种选择)。
  2. 检测检查文件扩展名的 mime 类型(如果存在这样的扩展名):此方法不是防错的,但它是执行此操作的公认方式(IMO)。如果文件没有任何扩展名,那么你有一个不容易解决的问题。
于 2013-08-15T20:05:36.677 回答