8. 批量上传时,是有多个post包还是只用一个post?
答:如果批量上传是以多个表单的方式,如下
这种方式批量上传,通过firefox的Httpfox抓包可以看到只有一次POST,每一个文件所处不同的表单,信息在包中用boundary分隔,如问题2中所述。
如果是按以下方式上传,就是一个文件打开框里可以选多个文件。
这样上传方式,监听到每一个文件对应一个POST,那每一次上传对应建立一次连接,然后上传完所有的文件(对应多个post包)还是每传一个文件建立一次连接,传完一个就断开,再传下一个的时候就新建连接?直观上的理解应该是建立一次连接,上传所有文件。
以多个表单的形式批量上传时,每个文件都是以boundary分隔,并且以如下形式开始:
Content-Disposition:form-data;name="photo1";filename="xxx.jpg"
Content-Type: image/jpeg
9. 如果同时多地方在上传文件,一个包中有没有可能包含几个文件的信息?
10. http post 上传的网络包的几种可能情况(包括并发上传的)
一次连接,一个post包,批量上传以多个form的形式提交
POST /cgi-bin/......
......
-----------------------------41184676334
Content-Disposition: form-data; name="photo3"; filename="3.png"
Content-Type: image/png
xxx
......
-----------------------------41184676334
Content-Disposition: form-data; name="photo4"; filename="4.png"
Content-Type: application/octet-stream
-----------------------------41184676334
Content-Disposition: form-data; name="photo5"; filename="5.png"
Content-Type: application/octet-stream
xxxx
...
-----------------------------41184676334--
一次连接,多个post包的批量上传(有先后顺序)
POST /cgi-bin/......
......
-----------------------------9040894219264
Content-Disposition: form-data; name="photo1"; filename="1.png"
Content-Type: image/png
xxx
......
-----------------------------9040894219264
...
POST /cgi-bin/......
......
-----------------------------7832161926446
Content-Disposition: form-data; name="photo2"; filename="2.png"
Content-Type: image/png
xxx
......
-----------------------------7832161926446
多次连接(肯定多个post包),在不同的地方同时上传(并发上传)
POST /cgi-bin/......
......
-----------------------------9040894219264
Content-Disposition: form-data; name="photo1"; filename="1.png"
Content-Type: image/png
xxx
......
POST /cgi-bin/......
......
-----------------------------7832161926446
Content-Disposition: form-data; name="photo2"; filename="2.png"
Content-Type: image/png
xxx
-----------------------------9040894219264
...
xxx
......
-----------------------------7832161926446