1. 程式人生 > >對form表單post的研究

對form表單post的研究

========================get方式提交form

預設方式為get,表單元素必須要有name屬性,最後各個表單元素的值(如果是file型別,值為檔名)會拼接成get方式的URL(帶有querystring)。
如果action屬性的URL原來帶有querystring,沒用會被替換。

========================post 方式提交form

============不上傳檔案時(假設只有兩個文字框,name分別為t1,t2)

application/x-www-form-urlencoded  方式    拼接了一個querystring格式(t1=abc&t2=123)的字串,放在body中傳送。

text/plain 方式  也是拼接了一個類似querystring格式的字串,把&符號換成換行符,就這點區別,所以一般不用這種方式。

multipart/form-data 方式  拼接瞭如下這個字串

------WebKitFormBoundaryoN4c6mtJxYsthawZ
Content-Disposition: form-data; name="t1"

as
------WebKitFormBoundaryoN4c6mtJxYsthawZ
Content-Disposition: form-data; name="t2"

1123
------WebKitFormBoundaryoN4c6mtJxYsthawZ--

============只上傳檔案時(假設只有兩個檔案框,name分別為t1,t2)注意:一個檔案框加 multiple="true"屬性就可以一次選多個,相當於
多個檔案框

application/x-www-form-urlencoded  方式   每個檔案框只能選一個檔案,然後拼接成(t1=a.jpg&t2=b.jpg)格式提交,可以看到只有檔名。

text/plain 方式  每個檔案框只能選一個檔案,上面的&變成換行符  很類似

multipart/form-data 方式  每個檔案框只能選一個檔案,在瀏覽器看到的內容如下,隱藏了資料體,而node後臺看到了資料體(在
Content-Type: image/jpeg 後面)


------WebKitFormBoundaryr4RCxmNfojDmqUlc
Content-Disposition: form-data; name="t1"; filename="avatar.jpg"
Content-Type: image/jpeg


------WebKitFormBoundaryr4RCxmNfojDmqUlc
Content-Disposition: form-data; name="t2"; filename="avatar2.jpg"
Content-Type: image/jpeg


------WebKitFormBoundaryr4RCxmNfojDmqUlc--