当前位置: 首页 > 資訊 >

要上傳檔案,你需要知道的事-MIME(1)

MIME 類別 (IANA 媒體類別) - HTTP | MDN


當我們要發 request 時候,我們需要在 header 中設定 Content Type ,告訴對方說“ 嘿! 我送給你的資料是這種類型 ”讓對方可以用適合的方式解析處理你所提供的資料,想像一下,要是你不說、亂說一個錯誤的類型,會發生什麼事? 對方可能對你已讀不會、或者無法正確取得,你所提供的資料,這樣不是很傻嗎?

Content Type 中有個屬性 media type,是讓你填寫所送資料類型,而你必須根據 MIME 格式填寫,不可以亂填

什麼是 MIME 媒體類別 ?

MIME 是一種標準,用來表示文件、檔案、各種位元組

ex. image/jpg

那 MIME 結構由什麼組成呢?

type/subtype;parameter=value

ex. 
text/plain;charset=UTF-8

主類別、子類別、參數

理解方式第一字是主要類別,第二字是子類別,使用“/”隔開,並不包含區隔,後方可加上參數,提供更多細節,如該如何解析

主要類別 ( type ) 子類別(subtype) 是什麼? 有哪些呢?

type 為廣義分類,subtype 則為資料精確類別

主要類別 ( type ) 簡介
根據傳送資料多種,分為 discrete 單一 and multipart 兩個家族

image/jpeg vs multipart/form-data

discrete 單一家族

中文是離散,但可以簡單理解為單一資料類型的標註(ex. image/jpg ),適用於單次req只傳送單一種類型資料,家族成員如下

  • application 適用多數 二進制資料 (binary data) ex. application/pdf
  • audio 適用音訊類資料 ex. audio/mpeg
  • font 適用各類文字型檔案 ex. font/ttf
  • image 適用各種圖片行檔案 ex. image/jpg
  • model 適用各種模型累資料, 3D object ex. model/3mf
  • text 適用各種人類可閱讀之文字資料 ex. text/html
  • video 適用各種影像資料ex. video/mp4

問:萬一我就不想送的精確,我想要通用、模糊、概括一點行嗎? 可

text/plain 可適用各種文字資料

application/octet-stream 適用各種二進制資料

multipart 家族

當你要一次送多種 MIME Type 就可以使用這家族的主類別

  • message 適用寄信時、大量文字情境 ex. message/partial
  • multipart 適用填表單情境 ex. multipart/form-data

後話

一般常見要填寫問卷、上傳檔案都會用 multipart/form-data ,這也是最近有開到相關api 才來了解這一塊der