了解媒体类型MIME

Quibbler 2021-3-8 1169

了解媒体类型MIME


        开发中会遇到指定数据MIME类型的场景:网络传输数据内容的类型Content-Type、网络请求RequestBody中数据的MediaType、安卓媒体库MediaFormat中定的MediaType、Intent设置数据和数据类型setDataAndType()。那么什么是MIME?



1、关于MIME

        它的英文全称是Multipurpose Internet Mail Extensions,直译为多用途因特网邮件扩展。最初也确实是为了邮件发送文件而定义,后来不仅仅用于邮件,并逐渐发展沿用至今,成为描述消息内容类型的因特网标准。


1.1、语法

        MIME的语法结构非常简单:由类型与子类型两个字符串中间用'/'分隔而组成;不允许空格存在;MIME类型对大小写不敏感,通常写法都是小写。

type/subtype

        type表示可以被分多个子类的独立类别,子类见2.2节subtype表示细分后的每个类型。MediaType在OkHttp库中的定义如下:

  /**
   * An [RFC 2045][rfc_2045] Media Type, appropriate to describe the content type of an HTTP request
   * or response body.
   *
   * [rfc_2045]: http://tools.ietf.org/html/rfc2045
   */
  class MediaType private constructor(
    private val mediaType: String,
    
    /**
     * Returns the high-level media type, such as "text", "image", "audio", "video", or "application".
     */
    val type: String,
    
    /**
     * Returns a specific media subtype, such as "plain" or "png", "mpeg", "mp4" or "xml".
     */
    val subtype: String,
  )


1.2、维护

        MIME由专门的组织负责协调:IETF(国际互联网工程任务组),并以RFC的形式将MIME的标准发布在网上。被广泛使用的文件格式才会被公认采纳,并获得官方认证MIME。比如常见的压缩格式zip、文本text、图像png等等。绝大多数公司、程序和开发者都遵循这个规范。

        个人无法注册MIME Type,但是可以使用保留格式自定义程序文件的MIME:以application/x-开头。即便定义了可能也不会被系统和大多数程序认可,比如Android系统中处理多媒体类型的类VideoCapabilitiesAudioCapabilities对于未知MIME Type会警告,从日志可以查看到警告信息:

	11398-11506/? W/VideoCapabilities: Unsupported mime image/vnd.android.heic
	11398-11506/? W/AudioCapabilities: Unsupported mime audio/x-ms-wma
	11398-11506/? W/AudioCapabilities: Unsupported mime audio/mpeg-L1
	11398-11506/? W/AudioCapabilities: Unsupported mime audio/mpeg-L2
	11398-11506/? W/AudioCapabilities: Unsupported mime audio/ra
	11398-11506/? W/AudioCapabilities: Unsupported mime audio/alac
	11398-11506/? W/AudioCapabilities: Unsupported mime audio/ape
	... ...


1.3、用途

        MIME用来告知浏览器或者程序文件的具体类型,进而能够根据文件的具体类型进行处理,而不是通过文件扩展名处理。

        在浏览器页面中按F12打开调试工具,可以看到页面中各个文件对应的Content-Type,浏览器就是根据不同文件对应的Content-Type类型展示内容:文本就显示文字,图片就是显示图像,音视频文件就用多媒体播放器处理 ...



2、MIME种类

        开发者对text/plain一定不陌生,这是最常见的MIME类型,表示文本文件。还有很多开发中常见的MIME类型:image/pngapplication/javascripttext/html


2.1、常见MIME

        开发者只需要知道常用的MIME类型,在项目中可以定义下面这些MIME为常量方便开发过程中使用。

        超文本标记语言文本        .html,.html            text/html

        普通文本                         .txt                        text/plain

        RTF文本                          .rtf                        application/rtf

        GIF图形                          .gif                         image/gif

        JPEG图形                        .jpeg,.jpg              image/jpeg

        au声音文件                     .au                         audio/basic

        MIDI音乐文件                 .mid,.midi              audio/midi,audio/x-midi

        RealAudio音乐文件        .ra, .ram                 audio/x-pn-realaudio

        MPEG文件                      .mpg,.mpeg          video/mpeg

        AVI文件                          .avi                        video/x-msvideo

        GZIP文件                        .gz                         application/x-gzip

        TAR文件                         .tar                        application/x-tar


2.2、MIME大类

        MIME有以下几个独立的类别,它们作为本类型MIME定义的前缀type


2.3、查询MIME

        互联网号码分配机构IANA负责确认并收录标准MIME,官方网站:IANA Media Types。收录了目前已知所有类型的MIME,开发者从该网站上可以查询需要的MIME:

MPAaudio/MPA[RFC3555]
mp4audio/mp4[RFC4337][RFC6381]
MP4A-LATMaudio/MP4A-LATM[RFC6416]
mpa-robustaudio/mpa-robust[RFC5219]
mpegaudio/mpeg[RFC3003]
   mpeg4-generic       audio/mpeg4-generic      [RFC3640][RFC5691][RFC6295]  
oggaudio/ogg[RFC5334][RFC7845]
opusaudio/opus[RFC7587]
parityfecaudio/parityfec[RFC3009]

        ... ...



相关资料:

        Media Types

        Mozilla 常见 MIME 类型列表

        Mozilla MIME 类型

        MIME 参考手册

        RFC-822 Standard for ARPA Internet text messages

        RFC-2045 MIME Part 1: Format of Internet Message Bodies

        RFC-2046 MIME Part 2: Media Types

        RFC-2047 MIME Part 3: Header Extensions for Non-ASCII Text

        RFC-2048 MIME Part 4: Registration Procedures

        RFC-2049 MIME Part 5: Conformance Criteria and Examples

        

不忘初心的阿甘
最新回复 (0)
    • 安卓笔记本
      2
        登录 注册 QQ
返回
仅供学习交流,切勿用于商业用途。如有错误欢迎指出:fluent0418@gmail.com