form如何正确post文件

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”才是文件的内容。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值