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

相关推荐

    MimeType文件校验demo

    在IT行业中,MimeType(MIME类型)是一种标准,用于标识互联网上的文件类型和编码方式。MimeType文件校验是网络服务中常见的操作,特别是在处理用户上传的文件时,它能确保服务器正确地解析和处理文件。本示例"Mime...

    php获得文件的mime type类.zip

    5. 扩展性考虑:为了增加类的灵活性,可以添加配置选项,让用户自定义当无法识别文件类型时返回的默认MIME类型。 以下是一个简单的`MimeTypeDetector`类的示例: ```php class MimeTypeDetector { public ...

    MIME-type MIME-type MIME-type MIME-type

    MIME类型在互联网中扮演着至关重要的角色,它不仅帮助我们识别文件的格式,还确保了不同系统之间能够正确地交换和处理数据。理解各种常见的MIME类型对于开发人员来说是非常重要的,因为它有助于确保数据在网络上传输...

    Http MIME type

    4. 安全性:通过正确地设置和识别MIME类型,系统可以降低安全风险,防止例如不正确的文件类型引发的跨站脚本攻击(XSS)或文件上传漏洞。 为了确保MIME类型的有效使用,开发者需要遵循一些最佳实践,例如: - 确保...

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

    在IIS(Internet Information Services)中,配置文件访问是服务器管理的重要部分,它涉及到如何处理...当遇到新类型的文件需要支持时,查找并添加相应的MIME类型到IIS配置中,将使服务器能够正确识别并处理这些文件。

    关于mime type的文章

    在开发中,我们可能会使用各种工具来处理MIME类型,如Apache或Nginx服务器配置文件中设定MIME类型,或者在前端开发中使用库如FileReader API读取文件并检查其MIME类型。此外,有些在线工具可以帮助识别或转换MIME...

    MIME参考类型,MIME参考类型,MIME参考类型手册,MIME帮助文档

    MIME类型由两部分组成:类型(type)和子类型(subtype)。类型通常分为“应用”(application)、“音频”(audio)、“图像”(image)、“视频”(video)、“文本”(text)和“消息”(message)。子类型则更...

    java通过文件头内容判断文件类型

    为了更准确地识别文件类型,可以考虑使用开源库,如Apache Tika或Mime-Type Detector。这些库已经内置了大量的文件类型检测规则,能处理更多的文件格式。 总的来说,通过Java读取文件头内容判断文件类型是一种实用...

    MIME类型,mime-types

    通过理解并正确使用MIME类型,开发者可以确保文件在网络上传输时被正确识别和处理,这对于Web服务、邮件系统以及各种互联网应用程序的正常运行至关重要。`mime-types.html` 和 `mime-types.xls` 提供的资源对于...

    Go mime包资源获取

    mimeType := mime.TypeByExtension(".jpg") // mimeType 的值将会是 "image/jpeg" ``` 4. **注册MIME类型**:如果遇到Go内置的`mime`包未包含的MIME类型,我们可以使用`mime.AddType`进行自定义注册。例如: ``...

    C# 读取文件类型,不是文件后缀

    在C#编程中,识别文件类型通常有两种方法:一种是通过检查文件的后缀名,另一种是通过读取文件的二进制数据并分析其内容。标题“C# 读取文件类型,不是文件后缀”暗示我们需要关注第二种方法,即不依赖文件扩展名来...

    MIME_TYPE_大全.doc

    MIME类型由两部分组成:主类型(major type)和子类型(subtype),之间用斜线“/”分隔。例如,"application/pdf"表示PDF文档。 以下是一些常见的MIME类型及其对应的文件扩展名和用途: 1. `application/acad` - ...

    获取文件类型.rar

    在编程中,例如在Node.js中,可以使用`fs`和`mimetype`库来获取文件类型: ```javascript const fs = require('fs'); const mime = require('mime-types'); fs.readFile('example.txt', 'binary', (err, data) => ...

    Java 读取图片的mimeType的方法

    Java 读取图片的mimeType的方法 ...这种方法可以通过读取文件的头部信息来判断图片的格式,从而获取图片的mimeType。这种方法可以避免通过文件后缀名来判断图片格式的不可靠性,提高了图片上传的安全性和可靠性。

    mime类型大全-网页制作

    - **内容识别**:MIME类型允许服务器告知客户端(如浏览器)传输的数据类型,确保正确解析。 - **安全控制**:通过指定MIME类型,可以防止浏览器错误地执行非预期的代码,如阻止JavaScript的恶意注入。 - **多用途**...

    多媒体文件格式MIME介绍

    在浏览器中,MIME 类型是通过 Content-Type header 来定义的。例如,假设你要传送一个 Microsoft Excel 文件到客户端,那么这时的 MIME 类型就是“application/vnd.ms-excel”。在大多数实际情况中,这个文件然后将...

    swift-swift-magic是libmagic文件类型识别库的Swift接口

    libmagic库是一个广泛使用的工具,能够通过分析文件的头部信息来识别文件的类型,它支持多种操作系统,包括Unix、Linux和macOS等。这个库在Unix环境中以`file`命令的形式被用户熟知,可以方便地在命令行中查看未知...

    PyPI 官网下载 | mimetype_description-0.0.5-py3-none-any.whl

    因此,`mimetype_description`可能提供了便捷的方法来解析、验证或生成MIME类型,帮助开发者更轻松地处理与数据格式相关的任务。它可能包含了各种MIME类型的枚举、转换功能,或者提供了一种方式来获取特定MIME类型的...

    MIME-Types-1.32.tar.gz

    因此,这个"MIME-Types-1.32"包可能是解决这个问题的关键,它提供了一个全面的MIME类型列表,可以确保服务器能够识别和处理各种类型的文件。 标签"MIME, linux, apache, nginx"进一步强调了这个压缩包与Linux操作...

    MIME Type 常見的格式類型列表

    ### MIME Type 常见的格式类型...这些MIME类型在Web开发、电子邮件系统以及其他网络应用中非常有用,能够帮助识别和处理不同的文件格式。需要注意的是,由于MIME规范处于不断发展中,上述列表仅供参考,并非详尽无遗。

Global site tag (gtag.js) - Google Analytics