一个文件的上传过程
常用post方式,通过向服务器请求获取SessionId,或者是新的文FileId.
通过http的rfc1867协议,使的其内容部分得以扩充.
包结构如下
POST /mxzf HTTP1.1\r\n
HOST: mxzf\r\n
.....
Content-Type: multipart/form-data; boundary="split_text"\r\n
Content-Length: 1234\r\n
\r\n
--spilt_text\r\n
Content-Disposition:form-data;........\r\n
\r\n
content1.......\r\n
--split_text\r\n
Content-Disposition:form-data;........\r\n
\r\n
content2........\r\n
--split_text\r\n
Content-Disposition:form-data;........\r\n
\r\n
lastcontent....\r\n
--split_text--\r\n
其内容中有个属性“Content-Disposition”,用来描述该资源特征.
模拟一次请求得到的请求体
POST/mxzf!upload.html HTTP/
1.1
Accept: text/plain, */*
Accept-Language: zh-cn
Host:
192.168.120.10
Content-Type:multipart/form-data;boundary=-----------------------------split
User-Agent: WinHttpClient
Content-Length:
3693
Connection: Keep-Alive
---------------------------split
Content-Disposition: form-data; name=
"file"; filename=
"kn.jpg"
Content-Type: image/jpeg
(此处省略jpeg文件二进制数据
...)
---------------------------split--
在最开始的
Content-Type:multipart/form-data;boundary=-----------------------------split,最前方多了2个'-',在数据的结束,也就是末尾,要加上2个'-',否则会出现错误。
理解不了的看下面的图解:

转载请注明原文地址: https://ju.6miu.com/read-14397.html