`
maimode
  • 浏览: 412468 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

文件类型识别(MIME type)

阅读更多
文件类型识别的方法有很多,例如使用URLConnection对象的getContentType方法获得:
File file = new File(“文件路径”);
String type = file.toURL().openConnection().getContentType();

其他方法可参考资料:http://www.rgagnon.com/javadetails/java-0487.html中介绍的方法针对不同形式的数据进行解析。

若数据是字节数组时,可参考程序:

/**
	  * 根据图片的bits字节数组中的数据,识别图片文件类型,再根据prefix内容构造一个适当的文件名称
	  * @param bits 图片字节数组
	  * @param prefix 用于构造文件名称的前缀串
	  * @return 0元素存放文件名称,1元素存放文件类型
	  */
	 public static String [] imgBitsDeal(byte[]bits, String prefix){
		 String [] rt = new String[2];
		// snippet for JMimeMagic lib
		// http://sourceforge.net/projects/jmimemagic/
		Magic parser = new Magic() ;
		MagicMatch match = null;
		try {
			match = parser.getMagicMatch(bits);
			rt[1] = match.getMimeType();//文件类型
			rt[0] = prefix + "." + match.getExtension();//构造文件名称(含扩展名)
//			System.out.println(match.getMimeType()) ;
//			System.out.println(match.getExtension()) ;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			rt[0] = prefix + "." + "png";	//默认文件名
			rt[1] = "image/png";	//默认文件类型
			e.printStackTrace();
		}		
		 
		return rt;
	 }

上面的程序需要jmimemagic-0.1.0.jar包支持,见附件

文件识别简单介绍:
    一般来说有两种途径识别文件的类型:
1.通过文件的扩展名识别,这种方式能对文件进行简单直观的判别,不能进行本质性的判别,一旦文件扩展名被修改了,就会判断失误;

2.通过文件数据的头部分进行识别,主流文件都在文件头记录了一些特征信息,可以利用这些特征信息对文件类型进行判别,这种方式较为本质些,可信度较高。
   
    谈到第二中方式,有两种常见实现方法,第一种:读取文件头信息,下载文件类型特制信息映射表,拿头信息和映射表进行匹配,可以得到常见文件类型信息;第二种:不用自己去匹配信息,而是采用第三方提供现成的包来解析文件类型,这样能节省很多时间,上面介绍的就是这种方法。
分享到:
评论

相关推荐

    IIS配置文件访问常见MIME扩展类型添加.docx

    IIS发布配置文件访问常见MIME扩展类型添加汇总,包括MP4,silk等,做文件上传的功能时,有个增加可支持的上传文件类型的需求,然后需要查文件后缀所对应的Mime Type用于识别。

    html5自动播放mov格式视频的实例代码

    <mimeMap fileExtension=.mov mimeType=video/quicktime> 如何识别?设置MIME类型。以IIS为例。除了可以在IIS界面上直接设置,还可以在项目的web.config里设置。给个完整的例子 <?xml version=1.0 encoding=UTF-...

    SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享

    修改成如下: 复制代码 代码如下: //Edit By Tacker if(function_exists(‘mime_content_type’)){ $this->file_type = preg_replace(“/^(.+?);.*$/”, “\\1”, mime_content_type($this->file

    filetype.py:小型、无依赖、快速的 Python 包,用于通过检查幻数签名来推断二进制文件类型

    因此您可以只无依赖(只有 Python 代码,没有 C 扩展,没有 libmagic 绑定) 跨平台文件识别安装pip install filetype 应用程序接口请参阅带注释的 API 参考。 例子 简单的文件类型检查 import filetypedef main ():...

    php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】

    $handle=finfo_open(FILEINFO_MIME_TYPE);//This function opens a magic database and returns its resource. $fileInfo=finfo_file($handle,'./test.txt');// Return information about a file finfo_...

    aidejava源码-FileManager:私人定制的文件管理器

    文件类型只识别3种, 文件夹,app安装包,其他文件, 有删除,只确认一次, 有复制粘贴,但和一般的不同, 复制是将选中的文件加到剪切板, 粘贴分两种,都是取出剪切板里第一个文件列表 一种是移动到指定位置,也...

    Linux file命令的使用

    file命令用来识别文件类型,对文件的检查分为文件系统、魔法幻数检查和语言检查三个过程,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的...

    codeigniter上传图片不能正确识别图片类型问题解决方法

    在用 codeigniter 的上传类上传图片的时候,明明是 jpg 格式图片,但是 ci 始终识别成 application/octet-stream 类型,从而导致上传失败,搜集了下资料,解决方法如下: 在 php.ini 中开启 fileinfo 扩展来获取正确...

    carrierwave-base64:将编码为base64字符串的文件直接上传到carrierwave

    所以你可以放心地更换mount_uploader与mount_base64_uploader同时支持文件输入和base64编码输入上传文件扩展名使用来自上传字符串的 gem和content_type自动识别上传的base64字符串的文件扩展名。 如果未注册所需的...

    一天一个shell命令 linux文本系列-file命令用法

    该命令用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的。 更多介绍可以查看这篇文章://...

    download_chinese_ebooks:简单的节点应用程序,用于下载用于创建epub的文件和资产

    ##工作原理在为设置服务器后,该应用程序将使您能够下载: 字体(在fonts_array中定义) 样式表(stylesheets_array) 所需的epub meta-inf和mimetype文件。 电子书的主要XHTML内容(mainFiles_array) 图像(在...

    linux.chm文档

    rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间 rpm -Va 检查系统中所有已安装的rpm包- 小心使用 rpm -Vp package.rpm 确认一个rpm包还未安装 rpm2cpio package.rpm | ...

    Linux Apache Web 服务器(续一)

    四、配置Apache基础篇,让WWW服务器跑起来 Apache服务器软件的配置文件主要有:“access.conf”:用于设置系统中的存取方式和环境;“httpd.conf”:用于设置...“mime.type”:记录Apache服务器所能识别的MIME格式。

    jquery-1.1.3 效率提高800%

    注意:如果你指明了下面列出的数据类型,请确保服务端发送了正确的MIME响应类型(如. xml 的类型是 "text/xml")。错误的MIME类型能够导致脚本出现意想不到的问题。请查看AJAX的范例来了解数据类型的更多信息。 ...

    EduSoho开源网络课堂---通用版 V6.6.12

    修复:修复编辑器的文件上传时,MIME-TYPE的识别错误 6.6.11 (2015-10-15) 修复:注册验证码的浏览器兼容问题 6.6.10 (2015-10-13) 修复:邮件服务器设置过期错误。 6.6.9 (2015-10-13) 优化:课程支持彻底删除...

    计算机应用技术(实用手册)

    后面是IDE设备的类型和硬件参数,TYPE用来说明硬盘设备的类型,我们可以选择AUTO、USER、NONE的工作模式,AUTO是由系统自己检测硬盘类型,在系统中存储了1-45类硬盘参数,在使用该设置值时不必再设置其它参数;...

    WKE WebUI基本组件演示,使用了LayUI框架标题栏整体窗口UI演示-易语言

     增加MimeType过滤接口  增加EnableNewWindow设置,如果为true, 那么将允许多进程窗口  增加下载接口  修正 JavascriptCore 一个浮点bug 2016-8-25  重写消息循环模式,重绘事件在独立线程完成  修正 Flash 不...

    java-servlet-api.doc

    RFC2046多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第二部分:媒体类型 RFC2047多用途网际邮件扩充协议(MIME)(多用途Internet邮件扩展)第三部分:信息标题扩展用于非ASCII文本 RFC2048多用途Internet邮件...

Global site tag (gtag.js) - Google Analytics