我正在写一个脚本,我需要正确的(我认为一些MIME类型可以不同于他们的扩展名)获取MIME类型的文件(这些文件可以是任何类型的文件) 。我怎样才能得到MIME类型的PHP
网络托管公司在使用中没有mime_content_type()
,并且仍然(不知道他们将在哪一年修复它)承诺修复PECL替代方案。
还有哪些方法可以解决它(而且我不能访问shell命令)?
我正在写一个脚本,我需要正确的(我认为一些MIME类型可以不同于他们的扩展名)获取MIME类型的文件(这些文件可以是任何类型的文件) 。我怎样才能得到MIME类型的PHP
网络托管公司在使用中没有mime_content_type()
,并且仍然(不知道他们将在哪一年修复它)承诺修复PECL替代方案。
还有哪些方法可以解决它(而且我不能访问shell命令)?
你可以尝试finfo_file - 它返回MIME类型。
我使用下面的函数,这是3种最常用的方法的包装:
function Mime($path, $magic = null)
{
$path = realpath($path);
if ($path !== false)
{
if (function_exists('finfo_open') === true)
{
$finfo = finfo_open(FILEINFO_MIME_TYPE, $magic);
if (is_resource($finfo) === true)
{
$result = finfo_file($finfo, $path);
}
finfo_close($finfo);
}
else if (function_exists('mime_content_type') === true)
{
$result = mime_content_type($path);
}
else if (function_exists('exif_imagetype') === true)
{
$result = image_type_to_mime_type(exif_imagetype($path));
}
return preg_replace('~^(.+);.+$~', '$1', $result);
}
return false;
}
$ _FILES [ '文件'] [ '类型']来自浏览器上传文件,所以你不能依赖这个值。
检出finfo_file基于文件内容识别文件类型。该文件的扩展名也不可靠,因为用户可以通过mp3扩展来上传恶意代码。
现在该更改您的托管服务提供商。 – shamittomar 2010-09-12 00:55:31