Java教程

媒体类型(MIME)是什么

本文主要是介绍媒体类型(MIME)是什么,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

MIME 定义

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

《HTTP 头字段 Content-Type 是什么》

随便打开一个网站,通过控制台可以看到网页在完成渲染之前向 Web 服务器请求大量的资源,这些资源有图片、音频、视频、CSS、JavaScript。为了区别资源类型,给 HTTP 头字段 Content-Type 添加 MIME,以便于浏览器以正确的方式处理它们。

给 HTTP 头字段 Content-Type 添加正确的 MIME 类型非常重要。如果配置不正确,浏览器可能会曲解文件内容,网站将无法正常工作,并且下载的文件也会被错误处理。

image

如上图,请求 eva.png 的 HTTP 的响应头字段 "content-type: image/png",代表图片资源是一个 .png 格式的图片。

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

复合媒体类型

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

MULTIPART 的子类型通常是 "form-data",即 "multipart/form-data"。它通常用来上传文件时所使用的一种 MIME 类型。

《FormData 是什么?附多文件上传案例》

怎么才体现出它是符合媒体类型?

let formData = new FormData();
// 可多选文件
for (let index in this.files) {
	formData.append(`files`, this.files[index]);
}
// 添加两个非文件的数据
formData.append('name', this.user.name);
formData.append('sex', this.user.sex);

用 axios 发送 formData 给 Web 服务器:

axios.post('http://localhost:8080/upload', formData, {
	headers: {
		'content-type': 'multipart/form-data'
	}
});

API 接口:

@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());
	}
}

复合类型 multipart 允许存在多种媒体类型,有文本类型以及文件,并且能够成功地接收这些数据。

image

这篇关于媒体类型(MIME)是什么的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!