1.使用 mime_content_type 方法
$mime_type = mime_content_type('1.jpg');
echo $mime_type; // image/jpeg
?>
但此方法在 php5.3 以上就被废弃了,官方建议使用 fileinfo 方法代替。
2.使用 Fileinfo 方法 (官方推荐)
使用fileinfo需要安装php_fileinfo扩展。
如已安装可以在extension_dir目录下找到php_fileinfo.dll(windows),fileinfo.so(Linux)
打开php.ini,把extension=php_fileinfo.dll前的";"去掉,然后重启apache。
$fi = new finfo(FILEINFO_MIME_TYPE);
$mime_type = $fi->file('1.jpg');
echo $mime_type; // image/jpeg
?>
3.使用 image_type_to_mime_type 方法(只能处理图象类型)
使用exif_imagetype方法需要安装php_exif扩展,并需要安装php_mbstring扩展
如已安装可以在extension_dir目录下找到php_exif.dll(windows),exif.so(linux)
打开php.ini,把 extension=php_mbstring.dll, extension=php_exif.dll 前的","去掉,然后重启apache
$image = exif_imagetype('1.jpg');
$mime_type = image_type_to_mime_type($image);
echo $mime_type; // image/jpeg
?>
Tips:如果使用文件名的后缀来判断,因为文件后缀是可以修改的,所以使用文件后缀来判断会不准确。
/** 文件转base64输出
* @param String $file 文件路径
* @return String base64 string
*/
$file = fileToBase64('./uploads/wxupload_14768632911264.amr');
function fileToBase64($file)
{
$base64_file = '';
if(file_exists($file))
{
// PHP 5.3以下使用
//$mime_type= mime_content_type($file);
//PHP 5.3以上使用
$fi = new finfo(FILEINFO_MIME_TYPE);
$mime_type = $fi->file($file);
$base64_data = base64_encode(file_get_contents($file));
$base64_file = 'data:'.$mime_type.';base64,'.$base64_data;
}
return $base64_file;
}
/** base64转文件输出
* @param String $base64_data base64数据
* @param String $file 要保存的文件路径
* @return boolean
*/
function base64ToFile($base64_data, $file)
{
if(!$base64_data || !$file)
{
return false;
}
return file_put_contents($file, base64_decode($base64_data), true);
}