我正在使用 5.4 并希望从我的文件句柄中检测 mime 类型。我知道我可以保存一个文件,然后通过传递字符串来使用函数,但我们想避免使用字符串。那么有没有没有任何字符串的方法?
问问题
991 次
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 类型。你有两个选择:
- 检测检查字节的内容(实际上,考虑到所涉及的难度和性能影响,我认为这不应该被视为一种选择)。
- 检测检查文件扩展名的 mime 类型(如果存在这样的扩展名):此方法不是防错的,但它是执行此操作的公认方式(IMO)。如果文件没有任何扩展名,那么你有一个不容易解决的问题。
于 2013-08-15T20:05:36.677 回答