http上传文件,http实体部分是要写全整个文件的二进制吗?

xqf1999 荣之联 服务器端工程师  2015-08-08 09:03:48
http上传的时候,首部用的Content-Type是multipart/form-data;
下面是一个例子,我假设向一个服务发送上传文件请求:

POST/logsys/home/uploadIspeedLog!doDefault.html HTTP/1.1

  Accept: text/plain, */*
  Accept-Language: zh-cn
  Host: 192.168.24.56
  Content-Type:multipart/form-data;boundary=-----------------------------7db372eb000e2
  User-Agent: WinHttpClient
  Content-Length: 3693
  Connection: Keep-Alive

-------------------------------7db372eb000e2

  Content-Disposition: form-data; name="file"; filename="kn.jpg"

  Content-Type: image/jpeg

  (此处省略jpg文件二进制数据,我可能很大,比如500M的图片...)

  -------------------------------7db372eb000e2--

我的问题:
二进制数据部分(已标红),是一次先把文件读取完再上传吗?如果是一个很大的文件比如:500M
,是不是读很长时间,组成一个超大的http请求体,再向服务器发送。还是另一种方式:读一
部分比如:1M,就向服务器发送,接着再读再发,保证服务器的接收流不断。
...全文
197 1 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
是以IO流的形式从浏览器向服务器发送数据。 1. 不是浏览器从将数据全都准备好才向服务器一次性发送; 2. 会按照表单中type=file来读取,一边读取一边发送,读取完一个type=file,尾部加一个boundary; 你可以理解成socket(socket就是一个长连接)流发送的形式。
回复
rumlee 2015-08-08
当然是一边读一边发了
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-08-08 09:03
社区公告
暂无公告