加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

获取文件MIME类型的php代码

发布时间:2020-05-25 06:51:37 所属栏目:PHP 来源:互联网
导读:获取文件MIME类型的php代码

下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。

脚本之家小编现在分享给大家,也给大家做个参考。

<?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-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*/

以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读