如何通过PHP中的文件句柄检测MIME类型?

时间:2013-08-15 19:58:31

标签: php

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

5 个答案:

答案 0 :(得分:0)

不是传递文件句柄或字符串,而是传递SplFileObject。使用此方法,您可以在不直接调用文件系统函数的情况下对文件进行OO访问。通过在对象上调用 - > getRealPath(),仍然可以使用需要路径名的函数。

$finfo     = new finfo(FILEINFO_MIME_TYPE); 
$mime_type = $finfo->file( $fileObject->getRealPath() );

答案 1 :(得分: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'。

答案 2 :(得分: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);

答案 3 :(得分:0)

使用stream_get_meta_data提取SELECT * FROM users WHERE LOWER( email ) LIKE '%@gmail.com' OR LOWER( email ) LIKE '%@googlemail.com'

uri

$mime = mime_content_type( stream_get_meta_data($fh)['uri'] ); 是我们的文件句柄

答案 4 :(得分:-1)

AFAIK文件内容字节中没有任何内容专门告诉mime类型。您有两种选择:

  1. 检测检查字节的内容(实际上我不认为这应该被认为是一个选项,考虑到所涉及的难度和性能影响)。
  2. 检测mime类型检查文件扩展名(如果存在此扩展名):此方法不是防错的,但是这是可接受的方式(IMO)。如果文件没有任何扩展名,那么您就遇到了一个无法轻易解决的问题。