html中文件上传的原理

大家都知道http是基于文本的协议,也就是说发送的无论是视频,音频,等等都会转换成
二进制字符串,然后传递给web服务器。一直纠结一件事,1.文件上传的时候,是不是
浏览器帮助我们把文件读取成为二进制字符串,然后附加一些文件类型,等等文件属性,
然后web服务器收到请求会相应的根据文件属性,把二进制字符串保留起来,加上
原来一样的后缀名和文件类型。也就达到了上传文件的目的。这样的理解是否正确?
请高手指教一下。
2.之后就是上传文件百分比%,是不是涉及到两边TCP通信问题,毕竟文件
太大(100M以上之类的)不可能客户端一次性读完,然后写到http请求头当中,还是什么?
求大神解惑

mark一下,等待大神回答

一直比较疑惑,毕竟html只是一大堆字符串。不可能无缘无故通过 就能上传文件。肯定是浏览器在搞鬼 ,不过流程是不是上面我
猜想的,等待大神来回答

1.无论是http还是tcp还是rmi或者rpc等等 在网络上传输的都是以二进制码的形式,而你http的请求体重有content-type 这个就是你
告诉服务器你的二进制是个啥 它好按照对应的方式解析
2.这个进度就是你二进制上载的速度 比如 总共有100m 一秒钟之后还有99m没传那么此时进度就是1%

楼主刚刚说的全部编码是不对的,在http协议体中的内容有三种编码方式:
1.application/x-www-form-urlencoded表示在发送前编码所有字符串
2.multipart/form-data不对字符编码(也就是说直接以二进制传输)
3.text/plain不对特殊字符进行编码

在http上传的时候默认是选择1来进行编码报文体的
但是在文件上传的时候,就需要设置第2中,才能正常进行文件上传
你可以通过http抓包观察,每个表单在报文体都有一个描述,服务端在解析http报文的时候
可以根据描述来确认发送的是哪一类的报文,从而对应解析

希望可以帮到你,有不明白的可以继续提问...