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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM