包由Header和Body构造成,Header记录了一些相关的数据,大同小异,唯一的一个需要注意的是Content-length字段标志了Body段的长度。在网上搜索到一段老外的代码,是全部转换为字符串后的处理代码,经实验后无法针对Binary文件提交,改写为Byte后可正常提交。
在Header中需要定义个分割符,可用32位UUID或者任意不可能与文件产生冲突的字符串作为分隔符
Body数据类格式类似如下
--boundaryboundary\r\n
Content-Description:form-data;name="theName"(\r\n)
\r\n
value\r\n
Body文件类协议如下
Content-Description:form-data;name="fileName";filename="thefilerealname"\r\n
Content-Type:application/octet-stream\r\n
[the file binary]
--boundaryboundary--\n
每个Body段开头由Boundary开头,最前面要有“--",在数据体结束的时候,末尾要有"--"再加一个\n字符
将整个Body转换为Byte流,计算出长度,赋值给Header的Content-Length,再将Header转化为Byte流,与Body进行结合,最后通过Winsock提交到指定的服务端处理程序。
在Header中需要定义个分割符,可用32位UUID或者任意不可能与文件产生冲突的字符串作为分隔符
Body数据类格式类似如下
--boundaryboundary\r\n
Content-Description:form-data;name="theName"(\r\n)
\r\n
value\r\n
Body文件类协议如下
Content-Description:form-data;name="fileName";filename="thefilerealname"\r\n
Content-Type:application/octet-stream\r\n
[the file binary]
--boundaryboundary--\n
每个Body段开头由Boundary开头,最前面要有“--",在数据体结束的时候,末尾要有"--"再加一个\n字符
将整个Body转换为Byte流,计算出长度,赋值给Header的Content-Length,再将Header转化为Byte流,与Body进行结合,最后通过Winsock提交到指定的服务端处理程序。
本文详细介绍了HTTP POST请求中文件上传的过程,包括Header和Body的构成、使用32位UUID作为分割符、文件类型定义及计算Body段长度的方法。通过实际案例展示了将Binary文件转换为Byte流进行提交的操作,确保了文件上传的正确性和效率。
2548

被折叠的 条评论
为什么被折叠?



