本文记录不依赖libcurl实现http的文件上传过程。不过只试了json文件的发送,其他文件没有试。
首先是HTTP头部
需要指定类型,以及边界boundary.
Content-Type: multipart/form-data; boundary=334411185563565600639729rn
还有一个:Content-Length: yyyrn。不过我用的http client库会自动添加。
这里要注意的数boundary长度不能超过70字节,是个随机数。具体可参考:
java boundary_HTTP多部分(POST)请求中的boundary参数是什么?_ExShepherd的博客-CSDN博客
然后就是组织body了
body要组织成MIME格式。分配一片内存,用于发送MIME需要的信息以及文件内容。
1 First boundary: 这里要在boundary前面加两个'-'表示开头
--334411185563565600639729rn
2 Encapsulated multipart part: (application/json)
Content-Disposition: form-data;name="file";filename="xxx.json"rn
3 内容类型。这里不指定的话文件会传不上去,原因还不知道。
Content-Type: application/jsonrnrn
4 文件内容
xxxxx 要发送的文件内容
5 结尾:这里要在boundary后面加两个'-'表示内容结束了。
--334411185563565600639729--rn
头部和Body都弄好之后,就可以通过http client发送出去了



