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