HTTP Post multipart/form-data支持
最近需要向平台发送录像文件,但是Skynet没有multipart/form-data的Post请求支持,写篇blog记录一下
skynet有自带简单的httpc,里面有post方法。但是这个post方法已经写死了Content-type,只能是url-encoded类型的,所以只适合body是几个key-value对的情况。
所以只能有最原始的httpc.request方法了。请求头比较灵活,可以自己设置为Content-type: multipart/form-data; 除了这个,还需要设置一个boundary,用来分割需要同时上传多个field的情况。每个field长这样:
--------------------------d74496d66958873e
Content-Disposition: form-data; name="secret"; filename="file.txt"
Content-Type: text/plain contents of the file
--------------------------d74496d66958873e--
其中--------------------------d74496d66958873e 这个就是boundary,最后会加上--表示结束。
特别鸣谢cURL的文档:https://ec.haxx.se/http-multipart.html,里面写的非常详细。还提到了一个Expect参数,让服务器可以用100 continue来让客户端继续传,如果因为身份认证等问题出错,可以直接返回错误码,中断客户端上传,避免上传了一大堆然后发现没权限的浪费。
对于多个field的编码,可以用这个库:https://github.com/Kong/lua-multipart,会帮你将body编码好
HTTP Post multipart/form-data支持的更多相关文章
- html5 file upload and form data by ajax
html5 file upload and form data by ajax 最近接了一个小活,在短时间内实现一个活动报名页面,其中遇到了文件上传. 我预期的效果是一次ajax post请求,然后在 ...
- Sending forms through JavaScript[form提交 form data]
https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript As in the ...
- Web 前沿——HTML5 Form Data 对象的使用
XMLHttpRequest Level 2 添加了一个新的接口——FormData.利用 FormData 对象,我们可以通过 JavaScript 用一些键值对来模拟一系列表单控件,我们还可以使用 ...
- Vue中应用CORS实现AJAX跨域,及它在 form data 和 request payload 的小坑处理
基本概念部分(一):理解CORS 说道Vue的跨域AJAX,我想先梳理一遍CORS跨域,"跨域资源共享"(Cross-origin resource sharing),它是一个W3 ...
- http 请求参数之Query String Parameters、Form Data、Request Payload
Query String Parameters 当发起一次GET请求时,参数会以url string的形式进行传递.即?后的字符串则为其请求参数,并以&作为分隔符. 如下http请求报文头: ...
- HTML5 Form Data 对象的使用
HTML5 Form Data 对象的使用 MDN: https://developer.mozilla.org/zh-CN/docs/Web/Guide/Using_FormData_Object ...
- form data和request payload的区别
HTML <form> 标签的 enctype 属性 在下面的例子中,表单数据会在未编码的情况下进行发送: <form action="form_action.asp&qu ...
- HTTP请求中的form data和request payload的区别
HTML <form> 标签的 enctype 属性 在下面的例子中,表单数据会在未编码的情况下进行发送: <form action="form_action.asp&qu ...
- [整理]Ajax Post请求下的Form Data和Request Payload
Ajax Post请求下的Form Data和Request Payload 通常情况下,我们通过Post提交表单,以键值对的形式存储在请求体中.此时的reqeuest headers会有Conten ...
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
转载:http://blog.csdn.net/mhmyqn/article/details/25561535 HTTP请求中,如果是get请求,那么表单参数以name=value&name1 ...
随机推荐
- 【jQuery、Express.js】AJAX提交Form
HTML/CSS代码 构建onclick事件 <div class = "row"> <div class = "col-md-10"> ...
- 室内Vary 渲染部分作品
室内Vary 渲染倍分作品
- window.opener和window.open
window.open (URL,name,specs,replace)方法用于打开一个新的浏览器窗口或查找一个已命名的窗口. URL:可选.打开指定的页面的URL.如果没有指定URL,打开一个新的空 ...
- vue-cli项目多页面配置
参考 : https://www.jianshu.com/p/0a30aca71b16
- Excel汉字转换拼音首字母缩写的函数
打开Excel->工具->宏->Viaual Basic编辑器在弹出来的窗口中对着VBAproject点右键->插入->模块下面会出现一个名为"模块1" ...
- Python中字符串的处理方法
1.字符串 word = '字符串' sentence = "这是一个句子." paragraph = """这是一个段落, 可以由多行组成" ...
- UDP聊天工具的实现
利用TIdUDPClient; TIdUDPServer; 实现聊天,其实很不爽,没有解决中文乱码问题,以后补充吧! 代码如下: unit Unit1; interface uses ...
- L1-035 情人节 (15 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805097018540032 以上是朋友圈中一奇葩贴:“2月14 ...
- IntelliJ IDEA及maven、git下载与配置
maven下载地址:http://maven.apache.org/download.cgi,下载bin文件然后解压 maven环境变量配置: MAVEN_HOME:D: \install\apac ...
- CentOS6.5 - yum对Mysql的安装与配置
一.mysql的安装 1.查看是否安装mysql [root@localhost ~]# rpm -qa | grep mysql 如果有进行卸载(以下三种方式选一种即可): -.el6.x86_64 ...