1. 程式人生 > >java接收圖片並上傳(接收)

java接收圖片並上傳(接收)

enctype屬性

我們平常在使用form表單時會有一個enctype屬性,其預設是application/x-www-form-urlencoded

w3c對這個編碼的定義是空格轉換為 "+" 加號,特殊符號轉換為 ASCII HEX 值,http伺服器是使用ASCII編碼傳輸資料的,其資料是按照key1=val1&key2=val2 的方式進行編碼,後端request.getparameter(key)就可以獲取值了,也是最常用的。

其次我們看看text/plain

空格轉換為 "+" 加號,但不對特殊字元編碼,也就是說是傳送純文字,完全不會轉義。

最後也是最重要的,multipart/form-data

我們上傳圖片必須要使用這個編碼,如果不設定的話,會無法接收到圖片,而這個的定義是不對字元進行編碼,所以可以理解成原樣傳送。

這裡使用預設的application/x-www-form-urlencoded接收資料時會接受不到圖片,當你寫入到檔案時,會發現檔案是空的,也就是說,輸入流裡面並沒有接收到圖片,所以這時就需要使用multipart/form-data。這樣的話就會在輸入流裡接收到並且可以寫入到檔案

另外這裡還有一個問題就是當設定為multipart/form-data,在接收其他引數時會有問題,比如輸入姓名,由於沒有進行編碼,相當於直接傳過來了二進位制資料,那麼後臺也當然無法獲取到,這裡後臺也有方法可以解決,具體的程式碼在後面的部落格會寫。