背景:
在最早的HTTP协议中,并没有附加的数据类型信息,所有传送的数据都被客户程序解释为超文本标记语言HTML 文档。
那么问题来了!
如何解决多媒体传输,图片、视频?
http协议通过定义不同的类型来对应不同的传输。
Accept:
客户端希望接受的数据类型。
Content-Type
客户端提交的数据类型, 使用的是 “主类型/子类型; 额外参数”
response.setContentType("text/html;charset=utf-8")
定义:
服务器告诉浏览器我给你传递的是什么,其中 text/html 为文件类型,utf-8为数据格式,简称MIME
浏览器根据你给的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。
文件类型不同,编码解码方式不同,解码就会错误。
常见的格式(主类型):
text:
用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的; 默认是text/plain;
multipart:
用于连接消息体的多个部分构成一个消息,这些部分可以是不同类型的数据; 默认是multipart/mixed;
application:
用于传输应用程序数据或者二进制数据; 默认是application/octet-stream;
multipart/form-data:需要在表单中进行文件上传时,就需要使用该格式
message:
用于包装一个E-mail消息;
image:
用于传输静态图片数据;
audio:
用于传输音频或者音声数据;
video:
用于传输动态影像数据,可以是与音频编辑在一起的视频数据格式。
常见的编码(子类型)
application/xhtml+xml :XHTML格式
application/xml : XML数据格式
application/atom+xml :Atom XML聚合格式
application/json : JSON数据格式
application/pdf :pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)