-
php获取文件mime类型程序代码
在php中获取文件的mime类型方法有很多种,我们来介绍直接利用mime_content_type()函数判断获取mime类型即可了.
mime_content_type返回指定文件的MIME类型,用法,代码如下:
- echo mime_content_type ( 'php.gif' ) . "n" ;
- echo mime_content_type ( 'test.php' );
输出:image/gif,text/plain,但是此函数在php5.3.0以后就不可用了,如果你是php5.3.0以后版本我们可使用如下代码来操作:
- $finfo = finfo_open(FILEINFO_MIME);
- $mimetype = finfo_file($finfo, $filename);
- finfo_close($finfo);
下面介绍用户自定的我这个是没有php版本限制,代码如下:
出处:http://www.phpfensi.com/php/20140106/1080.html
- <?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 (!emptyempty($ext) AND !emptyempty($mime[$ext])) {
- $type[0] = $mime[$ext];
- }
- }
- return $type[0];
- }
- $path = '1.txt'; //实际上当前路径并不存在1.txt
- var_dump(_getMimeType($path));
- /*End of php*/
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式