Http协议中的媒体类型

介绍

Web服务器会为所有HTTP对象数据附加一个MIME类型。当Web浏览器从服务器中取回一个对象时,会去查看相关的MIME类型,看看它是否知道应该如何处理这个对象。大多数浏览器都可以处理数百种常见的对象类型:显示图片文件、解析并格式化HTML文件、通过计算机声卡播放音频文件,或者运行外部插件软件来处理特殊格式的数据。
与数据内容一同回送的MIME类型
图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
.pdf Adobe Portable Document Format (PDF) application/pdf
.zip ZIP archive application/zip

更多的MIME类型参考火狐浏览器官方文档:

火狐浏览器支持的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();
    }
posted @ 2020-08-06 10:07  Jwsmai  阅读(755)  评论(0编辑  收藏  举报