我正在寫一個腳本,我需要正確的(我認爲一些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