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数据到服务端

posted on 2022-02-25 22:54  金满仓  阅读(707)  评论(0)    收藏  举报

导航