php获取文件mime类型,php如何获取文件MIME类型

本篇文章主要介绍php如何获取文件MIME类型,感兴趣的朋友参考下,希望对大家有所帮助。

本文实例讲述了php准确获取文件MIME类型的方法。具体实现方法如下:<?php

$mime = array (

//applications

'ai' => 'application/postscript',

'eps' => 'application/postscript',

'exe' => 'application/octet-stream',

'doc' => 'application/vnd.ms-word',

'xls' => 'application/vnd.ms-excel',

'ppt' => 'application/vnd.ms-powerpoint',

'pps' => 'application/vnd.ms-powerpoint',

'pdf' => 'application/pdf',

'xml' => 'application/xml',

'odt' => 'application/vnd.oasis.opendocument.text',

'swf' => 'application/x-shockwave-flash',

// archives

'gz' => 'application/x-gzip',

'tgz' => 'application/x-gzip',

'bz' => 'application/x-bzip2',

'bz2' => 'application/x-bzip2',

'tbz' => 'application/x-bzip2',

'zip' => 'application/zip',

'rar' => 'application/x-rar',

'tar' => 'application/x-tar',

'7z' => 'application/x-7z-compressed',

// texts

'txt' => 'text/plain',

'php' => 'text/x-php',

'html' => 'text/html',

'htm' => 'text/html',

'js' => 'text/javascript',

'css' => 'text/css',

'rtf' => 'text/rtf',

'rtfd' => 'text/rtfd',

'py' => 'text/x-python',

'java' => 'text/x-java-source',

'rb' => 'text/x-ruby',

'sh' => 'text/x-shellscript',

'pl' => 'text/x-perl',

'sql' => 'text/x-sql',

// images

'bmp' => 'image/x-ms-bmp',

'jpg' => 'image/jpeg',

'jpeg' => 'image/jpeg',

'gif' => 'image/gif',

'png' => 'image/png',

'tif' => 'image/tiff',

'tiff' => 'image/tiff',

'tga' => 'image/x-targa',

'psd' => 'image/vnd.adobe.photoshop',

//audio

'mp3' => 'audio/mpeg',

'mid' => 'audio/midi',

'ogg' => 'audio/ogg',

'mp4a' => 'audio/mp4',

'wav' => 'audio/wav',

'wma' => 'audio/x-ms-wma',

// video

'avi' => 'video/x-msvideo',

'dv' => 'video/x-dv',

'mp4' => 'video/mp4',

'mpeg' => 'video/mpeg',

'mpg' => 'video/mpeg',

'mov' => 'video/quicktime',

'wm' => 'video/x-ms-wmv',

'flv' => 'video/x-flv',

'mkv' => 'video/x-matroska'

);

function _getMimeDetect() {

if (class_exists('finfo')) {

return 'finfo';

} else if (function_exists('mime_content_type')) {

return 'mime_content_type';

} else if ( function_exists('exec')) {

$result = exec('file -ib '.escapeshellarg(__FILE__));

if ( 0 === strpos($result, 'text/x-php') OR 0 === strpos($result, 'text/x-c++')) {

return 'linux';

}

$result = exec('file -Ib '.escapeshellarg(__FILE__));

if ( 0 === strpos($result, 'text/x-php') OR 0 === strpos($result, 'text/x-c++')) {

return 'bsd';

}

}

return 'internal';

}

function _getMimeType($path) {

global $mime;

$fmime = _getMimeDetect();

switch($fmime) {

case 'finfo':

$finfo = finfo_open(FILEINFO_MIME);

if ($finfo)

$type = @finfo_file($finfo, $path);

break;

case 'mime_content_type':

$type = mime_content_type($path);

break;

case 'linux':

$type = exec('file -ib '.escapeshellarg($path));

break;

case 'bsd':

$type = exec('file -Ib '.escapeshellarg($path));

break;

default:

$pinfo = pathinfo($path);

$ext = isset($pinfo['extension']) ? strtolower($pinfo['extension']) : '';

$type = isset($mime[$ext]) ? $mime[$ext] : 'unkown';

break;

}

$type = explode(';', $type);

//需要加上这段,因为如果使用mime_content_type函数来获取一个不存在的$path时会返回'application/octet-stream'

if ($fmime != 'internal' AND $type[0] == 'application/octet-stream') {

$pinfo = pathinfo($path);

$ext = isset($pinfo['extension']) ? strtolower($pinfo['extension']) : '';

if (!empty($ext) AND !empty($mime[$ext])) {

$type[0] = $mime[$ext];

}

}

return $type[0];

}

$path = '1.txt'; //实际上当前路径并不存在1.txt

var_dump(_getMimeType($path));

/*End of php*/

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值