• MIME类型解析


    MIME(Multipurpose Internet Mail Extensions)多用途网络邮件扩展类型,可被称为Media type或Content type,

    它设定某种类型的文件当被浏览器打开的时候需要用什么样的应用程序,多用于HTTP通信和设定文档类型例如HTML。

    之所以叫多用途网络邮件扩展类型,因为它最早被用于电子邮件系统,后用于浏览器,服务器将此类型名放入传给浏览器的数据中以告诉浏览器用什么样的插件打开它

    MIME组成:(type/subtype; parameter)) 主类型+子类型+参数(可选)也可称为信息头+段头,这种称为更接近于“邮件”的概念

    写法上,传统写法是全小写,但其本身对大小写不敏感

    当前被认可的主类型包括: application text image multipart audio example font message model multipart video

    子类型也由媒体类型组成,但它也能包含其他内容,例如前缀、作者名。

    备注: 写法上注意;与后面的参数之间有空格

    例如: text/html; charset=UTF-8

    常见MIME类型:

    application: 某种二进制附件,对于没有subtype的情况,默认是application/octet-stream

    text: 文本,理论上可读,对于没有subtype的情况,默认是text/plain

    image: 图像

    audio: 音频

    video: 视频

    multipart: 多部分文档文件(复合文档文件)

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    下面是详细介绍

    application/octet-stream 未知的应用程序文件

    application/json json数据

    text/plain 未知的文本文件(纯文本文件),浏览器会认为这是可以直接显示的

    注: 浏览器分辨文件是基于MIME的,而不会把文件打开查看是否是其他类型,例如用link链接了一个标记为text/plain的文件,就算此文件是css文件,就算其后缀是.css,浏览器依旧不认

    text/css css文件

    text/html HTML文件

    image/gif gif文件

    常见的还有image/jpeg、image/png、image/svg

    很多浏览器支持icon image/x-icon

    multipart/form-data 多用于form表单提交,其中multipart即多部分文档,这里提供一个例子解析何为多部分文档

    <form action="http://localhost:8000/" method="post" enctype="multipart/form-data">
      <input type="text" name="myTextField">
      <input type="checkbox" name="myCheckBox">Check</input>
      <input type="file" name="myFile">
      <button>Send the file</button>
    </form>

    发送的请求是:

    POST / HTTP/1.1
    Host: localhost:8000
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    Content-Type: multipart/form-data; boundary=---------------------------8721656041911415653955004498
    Content-Length: 465
    
    -----------------------------8721656041911415653955004498
    Content-Disposition: form-data; name="myTextField"
    
    Test
    -----------------------------8721656041911415653955004498
    Content-Disposition: form-data; name="myCheckBox"
    
    on
    -----------------------------8721656041911415653955004498
    Content-Disposition: form-data; name="myFile"; filename="test.txt"
    Content-Type: text/plain
    
    Simple file.
    -----------------------------8721656041911415653955004498--
    View Code

    它通过分割线将内容分割成不同部分,每部分有自己的实体和请求头,因为被分割了,所以被称为多部分文档。

    这里的boundary是一个分隔符,可自定义,为了不和正常文本相混淆,一般设得复杂些,例如 ---------------------6354444552345。

    注意: 窗口数据仅一条,用分割线和换行符隔开,这是它与application/x-www-form-urlencoded的很大区别

    application/x-www-form-urlencoded

    与前者类似,注意区别:

    1.窗口数据被编码为键值对;

    2.当表单中包含文件上传时只能用multipart/form-data;

    3.multipart/form-data只支持post

    关于具体区别,可移步: https://www.lvtao.net/dev/1179.html

    备注: jquery默认content-type为application/x-www-form-urlencoded,这样能应付大多数情况

  • 相关阅读:
    Android ExpandableListView的下拉刷新实现
    Android 使用shape来画线
    三种常见的子查询(三十一)
    数据的准备(三十)
    LIMIT语句解析及本章简单回顾(二十九)
    WHERE、ORDER BY、GROUP BY、HAVING语句解析(二十八)
    查询表达式解析(二十七)
    单表的更新UPDATE和删除记录DELETE(二十六)
    插入记录INSERT(二十五)
    修改数据表——修改列定义和更名数据表(二十四)
  • 原文地址:https://www.cnblogs.com/yanze/p/7767228.html
Copyright © 2020-2023  润新知