form表单的enctype属性及其三个值的说明
form表单的enctype属性是用来设置请求体内容的格式,这个属性只有在post请求中有效并且该属性值会以请求头Content-Type的形式呈现 如:
Content-Type: text/plain[; charset=UTF-8]
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryeElzUqiiYyjiidkN
该属性有以下三个取值:
1.application/x-www-form-urlencoded:默认值,该值表示将参数格式化成QueryString并且将non-ASCII字符编码为%ASCII HEX. 这些参数在后端可以用request.getParameter("arg name")的方式获取
2.multipart/form-data:该值表示提交的数据,以多段(一个表单项一个数据段)的形式进行拼接,然后以二进制流的形式发送给服务器。每一段有自带三个跟content相关的请求头。
<i>.Content-Disposition 如:
form-data;name="username"
form-data; name="pic"; filename="photo.jpg"
file;filename="test.txt"
<ii>.Content-Type 如:
multipart/mixed; boundary=Bbc04y
application/octet-stream
<iii>.Content-Transfer-Encoding 如:BASE64, QUOTED-PRINTABLE, 8BIT, 7BIT, BINARY, X-TOKEN
之所以采取多段形式,是由于表单项的数据形式有三种:ASCII字符、non-ASCII字符、二进制数据且non-ASCII字符又有各自相应的字符编码。所以需要将包含不同类型的表单数据进行多段分割处理。现在由于UTF-8的推出,此值用于文件上传。
3.text/plain:纯文本传输,空格转换成+,但不将non-ASCII字符编码为%ASCII HEX. 现在主要应用于发送json数据到服务端
浙公网安备 33010602011771号