form在HTML中,是用于收集用户输入的,基本全部浏览器都支持form。给form加入method属性。就能实现将用户在form内控件输入的信息POST到制定地址。或发送GET请求。
写了以下一段代码。为了实现将用户选择的文件。POST到server。server端文件接收代码见,本文仅仅讲前端。不讲后端。form用于文件上传时。数据编码属性enctype必须设置为multipart/form-data。属性说明见。
在FireFox中用FireBug查看HTTP报文:
Request Headers From Upload StreamContent-Length 48Content-Type multipart/form-data; boundary=---------------------------121841334829646发现文件的内容根本不能POST到server。仅仅有"-----------------------------121841334829646--"能被发送到server。
用wireshark抓包也是相同的结果。
百思不得其解,就到stackoverflow发问了。原来,form中的控件,仅仅有加了name属性的,才生效!
改正后的代码:这是POST文件到server的全部数据:
-----------------------------30746427313740Content-Disposition: form-data; name="xxx"; filename="1.txt"Content-Type: text/plain111-----------------------------30746427313740--当中仅仅有“111”才是文件的内容。