您的位置:首页 > 其它

form如何正确post文件

2015-08-11 19:52 302 查看
form在HTML中,是用于收集用户输入的,基本所有浏览器都支持form。给form添加method属性,就能实现将用户在form内控件输入的信息POST到制定地址,或发送GET请求。

写了下面一段代码,为了实现将用户选择的文件,POST到server。server端文件接收代码见这里,本文只讲前端,不讲后端。form用于文件上传时,数据编码属性enctype必须设置为multipart/form-data,属性说明见这里

<form action="http://localhost:8000/upload/file=1.txt" enctype="multipart/form-data" method="post">
<input type="file">
<input type="submit" value="Send">
</form>


在FireFox中用FireBug查看HTTP报文:

Request Headers From Upload Stream
Content-Length 48
Content-Type multipart/form-data; boundary=---------------------------121841334829646
发现文件的内容根本不能POST到server,只有"-----------------------------121841334829646--"能被发送到server。用wireshark抓包也是同样的结果。

百思不得其解,就到stackoverflow发问了。 原来,form中的控件,只有加了name属性的,才生效!

改正后的代码:

<form action="http://localhost:8000/upload/file=1.txt" enctype="multipart/form-data" method="post">
<input type="file" name="xxx">
<input type="submit" value="Send">
</form>
这是POST文件到server的所有数据:

-----------------------------30746427313740
Content-Disposition: form-data; name="xxx"; filename="1.txt"
Content-Type: text/plain

111
-----------------------------30746427313740--
其中只有“111”才是文件的内容。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: