HTTP 的 Content-Type 及其媒体类型(MIME)
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 媒体类型。

HTTP 的 Content-Type 及其媒体类型(MIME)的更多相关文章
- 互联网媒体类型 MIME Type
参考:https://zh.wikipedia.org/wiki/%E4%BA%92%E8%81%94%E7%BD%91%E5%AA%92%E4%BD%93%E7%B1%BB%E5%9E%8B 互联网 ...
- 媒体类型(MIME类型)
# encoding=utf-8 #python 2.7.10 #xiaodeng #HTTP权威指南 #HTTP协议:超文本传输协议是在万维网上进行通信时所使用的协议方案. #媒体类型: #HTTP ...
- 003-RFC关于媒体类型说明
一.概述 RFC-822 Standard for ARPA Internet text messages [ARPA互连网文本信息标准]RFC-2045 MIME Part 1: Format ...
- .NET获取文件的MIME类型(Content Type)
第一种:这种获取MIME类型(Content Type)的方法需要在.NET 4.5之后才能够支持,但是非常简单. 优点:方便快捷 缺点:只能在.NET 4.5之后使用 public FileResu ...
- HTTP请求415错误 – 不支持的媒体类型(Unsupported media type)
HTTP请求415错误 – 不支持的媒体类型(Unsupported media type) 通常有以下情况: 1:检查你的 http 请求头信息,比如 因为 User-Agent 被服务器设置 拒绝 ...
- media query(媒体查询)和media type(媒体类型)
media type(媒体类型)是css 2中的一个非常有用的属性,通过media type我们可以对不同的设备指定特定的样式,从而实现更丰富的界面.media query(媒体查询)是对media ...
- [.NET Core]ASP.NET Core中如何解决接收表单时的不支持的媒体类型(HTTP 415 Unsupported Media Type)错误呢?
[.NET Core]ASP.NET Core中如何解决接收表单时的不支持的媒体类型(HTTP 415 Unsupported Media Type)错误呢? 在ASP.NET Core应用程序中,接 ...
- Web API中给领域模型添加媒体类型支持
一.媒体类型 媒体类型(也称为MIME类型)标识一段数据的格式.在HTTP中,媒体类型描述了消息体的格式.媒体类型由两个字符串组成,一个类型和一个子类型.例如:text / html: image/ ...
- Web API 入门 二 媒体类型
还是拿上面 那篇 Web API 入门 一 的那个来讲 在product类中加一个时间属性
随机推荐
- 使用docker搭建jupyter notebook / jupyterlab
说明 由于官方镜像实在是不怎么好用,所以我自己做了一个优化过的jupyter notebook的镜像 notebook_hub,使用我这个镜像搭建容器非常简单,下面就基于这个notebook_hub来 ...
- SpringCloud 客户端负载均衡:Ribbon
目录 Ribbon 介绍 开启客户端负载均衡,简化 RestTemplate 调用 负载均衡策略 Ribbon 介绍 Ribbon 是 Netflix 提供的一个基于 Http 和 TCP 的客户端负 ...
- 修改mysql数据库存储路径
最近一段比较忙,所以一直没有及时的更新总结一下测试路上遇到的问题,今天先来分享一下如何修改mysql存储路径(场景:在自己电脑上搭建的服务器上安装mysql,二.在公司自己的服务器上搭建mysql数据 ...
- C#中的String Interpolation
本文迁移自Panda666原博客,原发布时间:2021年4月17日. 在英文中,$符号表示美元符号(United States dollar).这也是很多人喜欢的东西.甚至是一生最求的东西.但在编程语 ...
- 知道vue组件同级传值吗?
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ASP.NET MVC之读取服务器文件资源的两种方式
初次认识asp.net mvc时,以为所有文件都需要走一遍路由,然后才能在客户端显示, 所以我首先介绍这一种方式 比如说:我们在服务器上有图片: ~/resource/image/5.jpg 我们就需 ...
- CMU15445 之 Project#0 - C++ Primer 详解
前言 这个实验主要用来测试大家对现代 C++ 的掌握程度,实验要求如下: 简单翻译一下上述要求,就是我们需要实现定义在 src/include/primer/p0_starter.h 中的三个类 Ma ...
- .NET混合开发解决方案24 WebView2对比CefSharp的超强优势
系列目录 [已更新最新开发文章,点击查看详细] WebView2控件应用详解系列博客 .NET桌面程序集成Web网页开发的十种解决方案 .NET混合开发解决方案1 WebView2简介 .NE ...
- 前端下载图片的N种方法
前几天一个简单的下载图片的需求折腾了我后端大佬好几天,最终还是需要前端来搞,开始说不行的笔者最后又行了,所以趁着这个机会来总结一下下载图片到底有多少种方法. 先起个服务 使用expressjs起个简单 ...
- Iterator接口介绍和迭代器的代码实现
定义:Iterator接口是Java集合框架中的一员. 作用:Collection接口与Map接口主要用于存储元素. 常用方法: boolen hasNext(); //判断游标右边是否还有元 ...