form怎样正确post文件
Posted mthoutai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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”才是文件的内容。
以上是关于form怎样正确post文件的主要内容,如果未能解决你的问题,请参考以下文章
为啥在使用 multipart/form-data 时不能正确发送带有 Unicode 的 POST 名称?
SpringCloud+Feign环境下文件上传与form-data同时存在的解决办法
在php中不用表单怎样向另一个页面post参数并打开这个接值页面?