MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。

MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。

这篇文章主要介绍了php准确获取文件MIME类型的方法,涉及php针对文件属性操作的相关技巧,需要的朋友可以参考下<?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*/

php获取文件mime类型,php 准确获取文件MIME类型的方法相关推荐

  1. python读取文件类型_python准确判断文件类型

    判断文件类型在开发中非常常见的需求,怎样才能准确的判断文件类型呢?首先大家想到的是文件的后缀,但是非常遗憾的是这种方法是非常不靠谱的,因为文件的后缀是可以随意更改的,而大家都知道后缀在linux系统下 ...

  2. python中如何区分文件类型_python准确判断文件类型

    判断文件类型在开发中非常常见的需求,怎样才能准确的判断文件类型呢?首先大家想到的是文件的后缀,但是非常遗憾的是这种方法是非常不靠谱的,因为文件的后缀是可以随意更改的,而大家都知道后缀在linux系统下 ...

  3. win7系统如何搜索计算机,win7怎样搜索文件?win7系统准确搜索文件的方法

    电脑存放和大量文件和程序,我们无法了解存放文件具体位置,win7系统怎样搜索文件呢?win7系统拥有贴心设计,对搜索功能进行改进,不仅在开始菜单中可以快速搜索文件,而且对硬盘文件搜索推出了索引功能,这 ...

  4. java获取vdx文件数据_通过文件名获取文件类型ContentType

    第一种方法: 引用System.Web.dll v4.5,就可以通过var mimeType = MimeMapping.GetMimeMapping(fileName);直接获取文件类型 第二种方法 ...

  5. R语言sys方法:sys.getpid函数获取R会话的进程ID、sys.glob函数和file.path函数匹配文件夹下的所有特定类型文件、sys.info函数获取系统和用户信息

    R语言sys方法:sys.getpid函数获取R会话的进程ID.sys.glob函数和file.path函数匹配文件夹下的所有特定类型文件.sys.info函数获取系统和用户信息 目录

  6. jquery获取html文件大小,jQuery获取file表单选择文件的路径、名字、大小、类型_忘却_前端开发者...

    一.问题 在使用file表单时想知道选择的文件的路径.名字.大小.类型? 二.知识点 1.input表单会触发change事件 2.获取路径   触发这个事件的对象调用val()函数 3.文件名  触 ...

  7. php 怎么查看文件类型信息,php获取文件类型和文件信息的方法

    php获取文件类型和文件信息的方法 发布于 2015-10-07 05:26:52 | 81 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pr ...

  8. ajax获取上传文件的类型,ajax上传文件类型

    //图片上传 function previewPic(e) { // console.log($(e.target).attr('data-id')); var fileDom = $('input[ ...

  9. 实战 - 文件上传功能:校验文件类型,文件大小,获取文件真实类型

    文件上传的漏洞和防御-设置黑名单和白名单 以PHP脚本语言为例,一些文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过Web访问的目录上传任意PHP文件,并能够 ...

最新文章

  1. 虫师python appium自动化测试书_Appium移动自动化测试(一)--安装Appium
  2. mysql和mariadb可以同时使用吗_10分钟实现MariaDB与MySQL在一台服务器同时运行
  3. mysql如何查看表拥有的键_如何查看表或列的所有外键?
  4. 游戏筑基开发之C语言编程技巧
  5. sketch文件导出没有背景色怎么办? sketch背景色消失的解决办法
  6. 幻方c语言程序,幻方算法 C语言描述
  7. MQTT、CoAP 还是 LwM2M?主流物联网协议如何选择
  8. 南京大学计算机学类,南京大学计算机专业怎么样
  9. c++实数运算和整数运算。
  10. Word撤销键(Ctrl+z)无效的解决方法
  11. 记录CheckBook状态:SharedPreferences存储器
  12. html怎么存储历史记录,设置网页在历史记录中保存10天
  13. 如何使用pem文件登录服务器,如何用pem链接服务器
  14. Hard Disk Sentinel Pro v5.70.8 硬盘哨兵 电脑硬盘检测工具
  15. SpringCloud H版之Eureka学习
  16. android文件管理器u盘,Android U盘文件显示在文件管理器
  17. Springboot上传文件时提示405
  18. Python基础——csv文件中某列数据替换为数字
  19. 会喊麦的CTO:从外包仔到熊猫直播CTO的技术态度丨今晚直播
  20. 生成 Excel + PDF 导出,用 Java 怎么实现?

热门文章

  1. xilinx mii to rmii核使用
  2. 基于DS18B20的多点测温方案详解
  3. 西行印度 Moonfrog,Panda 侃技术聊游戏建友谊
  4. PPT怎样使用艺术字来突出显示标题文本
  5. java disposable_Android rxjava2的disposable
  6. 多表查询、子查询、聚合函数
  7. Oracle INSTR 用法 Oracle 字符串搜索函数 INSTR Oracle instr 函数和like模糊查询对比 Oracle INSTR 用法
  8. CSDN文章质量检测系统
  9. redis统计用户日活量_Redis精确去重计数方法(咆哮位图)
  10. HSV颜色空间及RGB转HSV公式