POST / HTTP/1.1
HOST: host.example.com
Cookie: some_cookies...
Connection: Keep-Alive
Content-Type: multipart/form-data; boundary=12345
--12345
Content-Disposition: form-data; name="sometext"
some text that you wrote in your html form ...
--12345
Content-Disposition: form-data; name="name_of_post_request" filename="filename.xyz"
content of filename.xyz that you upload in your form with input[type=file]
--12345
Content-Disposition: form-data; name="image" filename="picture_of_sunset.jpg"
content of picture_of_sunset.jpg ...
--12345--
2 回答
EDIT :我正在维持一个类似但更深入的答案:https://stackoverflow.com/a/28380690/895245
要准确查看发生的情况,请使用
nc -l
或ECHO服务器以及浏览器或cURL等用户代理 .将表单保存到
.html
文件:创建要上传的文件:
跑:
在浏览器上打开HTML,选择文件,然后单击“提交”并检查终端 .
nc
打印收到的请求 . Firefox发送:或者,cURL应该发送与您的浏览器表单相同的POST请求:
你可以用以下方法做多个测试:
非常感谢@Ciro Santilli的回答!我发现他对边界的选择非常“不开心”因为所有的连字符:事实上,正如@Fake Name所评论的那样,当你在请求中使用你的边界时,它前面还有两个连字符:
例:
我发现on this w3.org page可以在multipart / form-data中封装multipart / mixed标头,只需在multipart / mixed中选择另一个边界字符串并使用该字符串封装数据 . 最后,您必须在FILO命令中使用"close"所有边界来关闭POST请求(例如:
看看上面的链接 .