Content-Type

Content-Type 代表 HTTP 携带的文件类型,决定文件接收方或发送方将以什么形式、什么编码读取这个文件。下图,load.gif 的媒体类型就是 image/gif:

媒体类型

MIMEIETF RFC 6838 (Multipurpose Internet Mail Extensions)是一种标准,用来表示文档、文件或字节流的性质和格式。

客户端向 Web 服务器请求大量的资源,包括图片、音频、视频、CSS、JavaScript。给 Content-Type 添加 MIME,浏览器以正确的方式处理文件。如果配置不正确,浏览器可能会曲解文件内容,网页将无法正常工作,并且下载的文件也会被错误处理。

媒体类型结构

MIME 的组成结构非常简单,由类型与子类型两个字符串中间用 "/" 分隔而组成。"type" 表示可以被分多个子类的独立类别;"subtype" 表示细分后的每个类型。

type/subtype

独立媒体类型

有 TEXT(文本)、IMAGE(图像)、AUDIO(音频)、VIDEO(视频)、APPLICATION(应用程序)这五种独立媒体类型。

独立媒体类型 主类型 RFC 定义 子类型
TEXT 表明是某种文本文件 RFC 6838 - 4.2.1 text/plain, text/html, text/css
IMAGE 表明是某种图像文件 RFC 6838 - 4.2.2 image/gif, image/png
AUDIO 表明是某种音频文件 RFC 6838 - 4.2.3 audio/midi, audio/mpeg
VIDEO 表明是某种视频文件 RFC 6838 - 4.2.4 video/webm, video/ogg
APPLICATION RFC 6838 - 4.2.5 application/javascript

复合媒体类型

上面五个独立媒体类型要求内容只能其中一种独立媒体类型,不可以包含多独立媒体类型;而 MULTIPARTRFC 6838 - 4.2.6可以让内容包含多种独立媒体类型,所以它是符合媒体类型。

MULTIPART 的子类型通常是 "form-data",也就是 "multipart/form-data"。它通常用来上传文件时所使用的一种 MIME 类型。把文件发送给 Web 服务器:

// 构造 FormData
let formData = new FormData();
// 1. 添加多个文件
for (let index in this.files) {
formData.append('files', this.files[index]);
}
// 2. 添加两个文本
formData.append('name', this.user.name);
formData.append('sex', this.user.sex);
// 3. 发送请求
axios.post('http://localhost:8080/upload', formData, {
// 配置 MIME
headers: {
'content-type': 'multipart/form-data'
}
});
@RequestMapping(value = "/upload", consumes = "multipart/form-data")
public void upload(@RequestParam("name") String name, @RequestParam("sex") String sex, @RequestParam("files") MultipartFile[] files) {
System.out.println("{ sex: " + name + ", sex: " + sex + " }");
for (MultipartFile file : files) {
System.out.println(file.getOriginalFilename());
}
}

复合媒体类型包含多种媒体类型,这个请求中包含 TEXT 和 IMAGE 媒体类型。

最新文章

  1. vs2010 创建预编译头 Debug 正常 Release Link Error问题解决
  2. 关于js中的几个小问题。
  3. HDU 1114 Piggy-Bank (poj1384)
  4. 用Delphi实现文件关联
  5. bash下几个替换运算符的区分
  6. asp.net core后台系统登录的快速构建
  7. Linux 高性能服务器编程——Linux网络编程基础API
  8. Hadoop2.41的HA的配置与启动
  9. Python爬虫入门教程 55-100 python爬虫高级技术之验证码篇
  10. Linux-CentOS 重置root密码
  11. 自己动手实现java数据结构(一) 向量
  12. pair work结对编程(张艺 杨伊)
  13. osg内置shader变量
  14. error.jsp错误页面跳转,统一异常处理
  15. 建立对ActiveX控件的了解
  16. Shiro配置cookie以及共享Session和Session失效问题
  17. ejabberd学习2
  18. 【bzoj3732】Network 最小生成树+倍增LCA
  19. 移动Web开发规范概述
  20. mybatis配置mapperLocations多个路径

热门文章

  1. 腾讯云Redis全面升级,性能提升400%,可用性高达5个9
  2. 从零开始实现lmax-Disruptor队列(二)多消费者、消费者组间消费依赖原理解析
  3. python实现对简单的运算型验证码的识别【不使用OpenCV】
  4. iPhone x 的区别
  5. .NET6 开源之JSON 2 SQL (JORM框架)
  6. Spring Data JPA系列3:JPA项目中核心场景与进阶用法介绍
  7. 好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!
  8. expect自动应答
  9. 7 个有趣的 Python 实战项目,超级适合练手
  10. Tomcat 安装及配置,创建动态的web工程