enctype :指定將數(shù)據(jù)回發(fā)到服務(wù)器時(shí)瀏覽器使用的編碼類型。用于表單里有圖片上傳。
編碼類型有以下三種:
application/x-www-form-urlencoded: 在發(fā)送前編碼所有字符(默認(rèn))。這是標(biāo)準(zhǔn)的編碼格式。
multipart/form-data: 不對(duì)字符編碼,在使用包含文件上傳控件的表單時(shí),必須使用該值。
text/plain: 窗體數(shù)據(jù)以純文本形式進(jìn)行編碼,其中不含任何控件或格式字符。
例子:
代碼如下:
<form action=${pagecontext.request.contextpath}/imageupload_saveorupdate.action method=post enctype=multipart/form-data>
<div>
<label>請(qǐng)選擇上傳圖片地址:</label>
<input type=file name=image/>
</div>
</div>
<div>
<input type=submit value=上傳/>
</div>
</form>
表單中enctype=multipart/form-data的意思,是設(shè)置表 單的mime編碼。默認(rèn)情況,這個(gè)編碼格式是 application/x-www-form-urlencoded,不能用于文件上傳;只有使用了multipart/form-data,才能完整 的傳遞文件數(shù)據(jù)。
enctype=multipart/form-data是上傳二進(jìn)制數(shù)據(jù)過去。
如果在服務(wù)器端要通過request對(duì)象來獲取相應(yīng)表單域的值,則應(yīng)該將enctype屬性設(shè)置為application/x-www-form-urlencoded值(即默認(rèn)值,可以不顯示設(shè)置)。
為什么上傳文件要設(shè)置enctype=multipart/form-data:
因?yàn)椋涸O(shè)置enctype為multipart/form-data值后,不對(duì)字符編碼,則數(shù)據(jù)通過二進(jìn)制的形式傳送到服務(wù)器端,這時(shí)如果用request是無法直接獲取到相應(yīng)表單的值的,而應(yīng)該通過stream流對(duì)象,將傳到服務(wù)器端的二進(jìn)制數(shù)據(jù)解碼,從而讀取數(shù)據(jù)。
如果要上傳文件的話,是一定要將encotype設(shè)置為multipart/form-data的。
更多信息請(qǐng)查看IT技術(shù)專欄