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,就向服务器发送,接着再读再发,保证服务器的接收流不断。
...全文
262 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
是以IO流的形式从浏览器向服务器发送数据。 1. 不是浏览器从将数据全都准备好才向服务器一次性发送; 2. 会按照表单中type=file来读取,一边读取一边发送,读取完一个type=file,尾部加一个boundary; 你可以理解成socket(socket就是一个长连接)流发送的形式。
rumlee 2015-08-08
  • 打赏
  • 举报
回复
当然是一边读一边发了

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧