Http协议中的媒体类型
介绍
Web服务器会为所有HTTP对象数据附加一个MIME类型。当Web浏览器从服务器中取回一个对象时,会去查看相关的MIME类型,看看它是否知道应该如何处理这个对象。大多数浏览器都可以处理数百种常见的对象类型:显示图片文件、解析并格式化HTML文件、通过计算机声卡播放音频文件,或者运行外部插件软件来处理特殊格式的数据。
图1-1 与数据内容一同回送的MIME类型
案例
下面是通过curl命令向服务器请求excel文档的过程,服务器返回的对象类型是 application/x-msdownload
[cdh140 ~]$ curl -v http://12.32.7.100:8008/monitor/download
* About to connect() to 12.32.7.100 port 8008 (#0)
* Trying 12.32.7.100...
* Connected to 12.32.7.100 (10.22.5.140) port 8008 (#0)
> GET /monitor/download HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 12.32.7.100:8008
> Accept: */*
>
< HTTP/1.1 200
< Content-Disposition: attachment;filename=????.xlsx
< Content-Type: application/x-msdownload
< Content-Length: 5120
< Date: Thu, 06 Aug 2020 01:30:54 GMT
常见MIME类型
主类型
类型 | 描述 |
---|---|
application | 应用程序特有的格式 |
audio | 音频格式 |
chemical | 化学数据集 |
image | 图片格式 |
message | 报文格式 |
model | 三维模型格式 |
multipart | 多部分对象集合 |
text | 文本格式 |
video | 视频电影格式 |
子类型
MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。
拓展名 | 文档类型 | MIME类型 |
---|---|---|
.htm .html | HyperText Markup Language (HTML) | text/html |
.txt | Text, (generally ASCII or ISO 8859-n) | text/plain |
.json | JSON format | application/json |
.png | Portable Network Graphics | image/png |
.jpeg .jpg | JPEG images | image/jpeg |
.xls | Microsoft Excel | application/vnd.ms-excel |
.xlsx | Microsoft Excel (OpenXML) | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
Adobe Portable Document Format (PDF) | application/pdf | |
.zip | ZIP archive | application/zip |
更多的MIME类型参考火狐浏览器官方文档:
用Java发送HTTP请求传输Excel文件
/**
* 下载Excel报告
*
* @param request
* @param response
* @throws IOException
*/
public void downloadFile(HttpServletRequest request, HttpServletResponse response) throws IOException {
InputStream is = new FileInputStream(FileConfig.FILE_PATH + ".xlsx");
HSSFWorkbook workbook = new HSSFWorkbook(is);
OutputStream out = response.getOutputStream();
String fileName = FileConfig.FILE_PATH;// 文件名
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment;filename=" + new String((fileName + ".xlsx").getBytes(), "UTF-8"));
workbook.write(out);
out.close();
response.getOutputStream().flush();
response.getOutputStream().close();
}