精华内容
参与话题
问答
  • MIME

    2019-12-31 14:54:21
    文章目录MIME一、定义二、产生原因三、内容四、功能五、使用常见问题有文件后缀名,为什么还需要MIME?参考文献官方MIME规范 MIME 一、定义 MIME (Multipurpose Internet Mail Extensions),多用途互联网邮件扩展...

    MIME

    一、定义

    MIME (Multipurpose Internet Mail Extensions),多用途互联网邮件扩展类型。

    二、产生原因

    传统的电子邮件协议规定,电子邮件只能使用ASCII字符,这致使:

    • 非英文字符无法显示
    • 二进制文件(如图片)无法显示
    • 电子邮件不能有附件

    为了使邮件可以传输多种信息格式和内容,提出了MIME。

    三、内容

    MIME对传统电子邮件的扩展,表现在它在信件头部分添加了几条语句,主要有三条:

    • MIME-Version: 1.0

      这条语句是必须的,而且1.0这个版本值是不变的,即使MIME本身已经升级了好几次。

    • Content-Type: text/plain; charset=“ISO-8859-1”

      • Content-Type

        表明信息类型,缺省值为" text/plain"。它包含了主要类型(primary type)和次要类型(subtype)两个部分,两者之间用"/"分割。主要类型有9种,分别是application、audio、example、image、message、model、multipart、text、video。

      • charset

        表明编码类型,缺省值是ASCII,其他可能值有"ISO-8859-1"、“UTF-8”、"GB2312"等等。

    • Content-transfer-encoding: base64

      表明编码转换的方式。

      缺省值是"7bit",其他四种为"7bit"、“8bit”、“binary”、“quoted-printable"和"base64”

      其中,"base64"是MIME提供的一种

    四、功能

    在邮件协议和HTTP协议中,标注传输数据的格式,帮助邮件系统或者浏览器识别返回的是什么内容的数据,应该如何打开,如何显示。

    五、使用

    • 注册

      可以根据自己的需要向IANA注册MIME(RFC2048),包括:

      • media types
      • external body access types
      • content-transfer-encodings
    • 邮件协议

    • HTTP协议

    常见问题

    有文件后缀名,为什么还需要MIME?

    文件扩展名是DOS等操作系统用来标志文件格式的一种机制,用于指示操作系统打开文件的方式。这种指示不是强制的,即用户可以通过任何方式,通知操作系统打开文件。

    MIME则是用在邮件系统和浏览器中,指示打开文件的方式

    对于服务器上的静态网页,网址对应的文件类型和MIME type类型一致,但是

    • 动态网页中,网址文件名的关系也不再紧密,一张图片的网址所返回的MIME type是固定的(比如image/jpeg),但它的本体对应的可能是服务器上的一个文件,也可能是缓存中的一段数据,还可能是数据库中的一个字段,甚至是程序代码动态生成的图像;
    • 随着restful风格的URL的流行,网址中已经看不到文件名的踪影。

    因此,需要MIME对网络中传输的文件类型进行说明,以指示打开方式。

    参考文献

    https://www.w3school.com.cn/media/media_mimeref.asp MIME参考-W3Cschool

    https://www.zhihu.com/question/60495696/answer/204530120 既然有文件后缀名,为何还需要MIME类型? - 知乎

    ruanyifeng.com/blog/2008/06/mime.html MIME笔记-阮一峰

    官方MIME规范

    Internet工程任务组(IETF)在以下文档中提供了有关MIME格式的确定信息:

    • ARP- Internet文本消息格式的RFC-822标准
    • RFC-2045多用途Internet邮件扩展(MIME)第一部分:Internet邮件正文的格式
    • RFC-2046多用途Internet邮件扩展(MIME)第二部分:媒体类型
    • RFC-2047多用途Internet邮件扩展(MIME)第三部分:非ASCII文本的邮件头扩展
    • RFC-2048多用途Internet邮件扩展(MIME)第四部分:注册过程
    • RFC-2049多用途Internet邮件扩展(MIME)第五部分:一致性标准和示例
    展开全文
  • mime

    千次阅读 2016-09-18 19:29:46
    MIME笔记 作者: 阮一峰 日期: 2008年6月22日 我最近对互联网的一些技术细节很感兴趣,打算做一系列的笔记。 ================= MIME笔记 1. MIME的全称是...

    MIME笔记

    作者: 阮一峰

    日期: 2008年6月22日

    最近对互联网的一些技术细节很感兴趣,打算做一系列的笔记。

    =================

    MIME笔记

    1.

    MIME的全称是"Multipurpose Internet Mail Extensions",中译为"多用途互联网邮件扩展",指的是一系列的电子邮件技术规范,主要包括RFC 2045、RFC 2046、RFC 2047、RFC 4288、RFC 4289和RFC 2077。

    顾名思义,MIME是对传统电子邮件的一个扩展,现在已经成为电子邮件实际上的标准。

    2.

    传统的电子邮件是1982年定下技术规范的,文件是RFC 822。

    它的一个重要特点,就是规定电子邮件只能使用ASCII字符。这导致了三个结果:1)非英语字符都不能在电子邮件中使用;2)电子邮件中不能插入二进制文件(如图片);3)电子邮件不能有附件。

    这实际上无法接受的,因此到了1992年,工程师们决定扩展电子邮件的技术规范,提出一系列补充规范,这就是MIME的由来。

    3.

    下面是一封传统的电子邮件。

    From: "Tommy Lee" <lee@example.com>
    To: "Jack Zhang" <zhang@example.com>
    Subject: Test
    Date: Wed, 17 May 2000 19:08:29 -0400
    Message-ID: <NDBBIAKOPKHFGPLCODIGIEKBCHAA.lee@example.com>

    Hello World.

    从上面可以看出,这封信的发信人地址是lee@example.com,收信人地址是zhang@example.com,邮件主题是Test,发送时间是2000年5月17日,邮件内容是"Hello World."。

    在结构上,这封信分为三个部分:首先是信件头,然后是一个空行,最后是信件内容。收信人的客户端软件只会显示最后一部分,要查看全信,必须使用"查看原始邮件"功能。

    4.

    MIME对传统电子邮件的扩展,表现在它在信件头部分添加了几条语句,主要有三条。

    第一条是:

    MIME-Version: 1.0

    这条语句是必须的,而且1.0这个版本值是不变的,即使MIME本身已经升级了好几次。

    有了这条语句,收信端就知道这封信使用了MIME规范。

    5.

    第二条语句是:

    Content-Type: text/plain; charset="ISO-8859-1"

    这一行是极端重要的,它表明传递的信息类型和采用的编码。

    Content-Type表明信息类型,缺省值为" text/plain"。它包含了主要类型(primary type)和次要类型(subtype)两个部分,两者之间用"/"分割。主要类型有9种,分别是application、audio、example、image、message、model、multipart、text、video。

    每一种主要类型下面又有许多种次要类型,常见的有:

    text/plain:纯文本,文件扩展名.txt
    text/html:HTML文本,文件扩展名.htm和.html
    image/jpeg:jpeg格式的图片,文件扩展名.jpg
    image/gif:GIF格式的图片,文件扩展名.gif
    audio/x-wave:WAVE格式的音频,文件扩展名.wav
    audio/mpeg:MP3格式的音频,文件扩展名.mp3
    video/mpeg:MPEG格式的视频,文件扩展名.mpg
    application/zip:PK-ZIP格式的压缩文件,文件扩展名.zip

    详细的Content-Type列表,可以查看这里这里

    如果信息的主要类型是"text",那么还必须指明编码类型"charset",缺省值是ASCII,其他可能值有"ISO-8859-1"、"UTF-8"、"GB2312"等等。

    整个Content-Type这一行,不仅使用在电子邮件,后来也被移植到了HTTP协议中,所以现在只要是在网上传播的HTTP信息,都带有Content-Type头,以表明信息类型。

    6.

    前面已经说过,电子邮件的传统格式不支持非ASCII编码和二进制数据。因此MIME规定了第三条语句:

    Content-transfer-encoding: base64

    这条语句指明了编码转换的方式。Content-transfer-encoding的值有5种----"7bit"、"8bit"、"binary"、"quoted-printable"和"base64"----其中"7bit"是缺省值,即不用转化的ASCII字符。真正常用是"quoted-printable"和"base64"两种,它们的详细用法,我在明天的笔记中会详细介绍。

    7.

    下面是一封我收到的邮件的源码:

    Date: Wed, 18 Jun 2008 18:07:51 +0800 (CST)
    From: xxx <xxx@163.com>
    To: yifeng.ruan@gmail.com
    Message-ID: <14410503.1073611213783671983.JavaMail.coremail@bj163app54.163.com>
    Subject: =?gbk?B?xOO6ww==?=
    MIME-Version: 1.0
    Content-Type: multipart/alternative; 
    boundary=&quot;----=_Part_287491_22998031.1213783671982&quot;

    ------=_Part_287491_22998031.1213783671982
    Content-Type: text/plain; charset=gbk
    Content-Transfer-Encoding: base64

    IAq4+b7dsr+209PQudi55raoo6yyu7XD1Nq12Le9yM66zs341b7Jz7nSz+DTprXEtqvO96Osx+vE
    49TaxOO1xLKpv83W0AogIArW0Ln6yr2x6tPvIC0gyO7Su7fltcTN+MLnyNXWvgoKtcS12jEy1cXN
    vMasyb6z/aOst/HU8s7Sw8fXt76/xOO1xM/gudjU8MjOoaPQu9C7us/X96OhtMvNvMas1Nq4vbz+
    wO/D5g==
    ------=_Part_287491_22998031.1213783671982
    Content-Type: text/html; charset=gbk
    Content-Transfer-Encoding: quoted-printable

    <DIV>&amp;nbsp;</DIV>
    <DIV>=B8=F9=BE=DD=B2=BF=B6=D3=D3=D0=B9=D8=B9=E6=B6=A8=A3=AC=B2=BB=B5=C3=D4=
    =DA=B5=D8=B7=BD=C8=CE=BA=CE=CD=F8=D5=BE=C9=CF=B9=D2=CF=E0=D3=A6=B5=C4=B6=AB=
    =CE=F7=A3=AC=C7=EB=C4=E3=D4=DA=C4=E3=B5=C4=B2=A9=BF=CD=D6=D0</DIV>
    <DIV>&amp;nbsp;
    ......

    可以看到这封信的MIME语句是:

    MIME-Version: 1.0
    Content-Type: multipart/alternative; 
    boundary="----=_Part_287491_22998031.1213783671982"

    "Content-Type: multipart/alternative;"表明这封信的内容,是纯文本和HTML文本的混合。另两个可能的值是multipart/mixed和multipart/related,分别表示"信件内容中有二进制内容"和"信件带有附件"。

    "boundary="----=_Part_287491_22998031.1213783671982"
    "表明不同信件内容的分割线是"----=_Part_287491_22998031.1213783671982",它通常是一个很长的随机字符串。

    信件内容部分又有两个子信件头:

    Content-Type: text/plain; charset=gbk
    Content-Transfer-Encoding: base64

    Content-Type: text/html; charset=gbk
    Content-Transfer-Encoding: quoted-printable

    它们表明,第一个部分是gbk编码的纯文本,编码转换格式是base64。第二个部分是gbk编码的HTML文本,编码转化格式是quoted-printable。

    [延伸阅读]

    1. wikipedia的MIME条目

    2. MIME FAQ

    3. MIME邮件面面观

    (完)

    展开全文
  • <div><p>The <a href="https://github.com/mime-types/ruby-mime-types/">mime-types</a> gem is used in ...:Apis::Core::BaseUploadCommand</a> to determine the MIME type of the uploaded file via the filename. ...
  • reset mime-types

    2020-11-28 17:29:52
    s new custom mime-type feature</a> and can't do a proper <em>teardown</em> between tests due to a number of reasons. But the main one, that stops me right now, is that <code>mime</code> doesn'...
  • <p>While trying to install rest-client gem (1.6.7) we have to install mime-types (we use 1.17.2) and recently it begun demanding mime-types-data gem, which cannot be installed on our ruby version. ...
  • I am assuming this is a bug and that passing a valid mime-type to <code>mime.lookup</code> should return that same mime-type. Also, the README says this behaves similarly to ...
  • MIMEType

    2020-03-24 23:18:21
    MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准,说白了也就是文件的媒体类型。浏览器可以根据它来区分文件,然后决定什么内容用什么形式来显示。 二、部分文件的MIMEType 文件...

    一、说明

    MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准,说白了也就是文件的媒体类型。浏览器可以根据它来区分文件,然后决定什么内容用什么形式来显示。

    二、部分文件的MIMEType

    文件拓展名 MIMEType
    png image/png
    bmp\dib image/bmp
    jpg\jpeg\jpg image/ipeg
    gif image/gif
    mp3 audio/mpeg
    mp4\mpg4\m4v\mp4v video/mp4
    js application/javascript
    pdf application/pdf
    text\txt text/plan
    json application/json
    xml text/xml

    三、为什么要获取MIMEType

    关于为什么要获取MIMEType的原因,是因为在进行文件上传的时候,需要在POST请求体中传递相应的参数,来进行文件的上传操作

    说明:当然你也可以直接传递application/octet-stream,此参数表示通用的二进制类型。

    四、获取MIMEType

    • 向这个文件发个请求,来进行获取MIMEType


     

    展开全文
  • s currently no way to distinguish known octet-streams from fallback octet-streams (<a href="https://github.com/broofa/node-mime/issues/55">mime bug #55). <p>I'd be glad if you could implement the ...
  • 主要介绍了MIME-Types MIME 类型集合,服务器就是以MIME-Types类型来处理这些请求,一般客户端进行处理
  • ) is not a supported stylesheet MIME type, and strict MIME checking is enabled. runtime-es2015.d4eba49024df75acf821.js:1 Failed to load module script: The server responded with a non-JavaScript MIME ...
  • 常用文件的mimemimetype,几乎包括所有文件,大概有1000多项
  • 主要介绍了The Complete List of MIME Types(比较完整的MIME类型一览表),需要的朋友可以参考下
  • MIME 类型

    2020-08-06 13:07:09
    MIME 类型又叫做 “媒体类型”。指的是:一种用来表示文档、文件或字节流的性质和格式的标准。 MIME的组成结构:type/subtype。 type是类型,subtype是子类型。它们中间用“/”分割。不允许空格存在。对大小写不...

    MIME 类型又叫做 “媒体类型”。指的是:一种用来表示文档、文件或字节流的性质和格式的标准。

    MIME的组成结构:type/subtype。

    type是类型,subtype是子类型。它们中间用“/”分割。不允许空格存在。对大小写不敏感。

     

    常见的类型

    常见的 MIME 类型

     

    参考文档:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types

     

    展开全文

空空如也

1 2 3 4 5 ... 20
收藏数 28,359
精华内容 11,343
关键字:

mime