xyz_dream
爱在南信
采纳率0%
2017-09-15 02:33 阅读 1.8k

html中文件上传的原理

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • sunny_desmond carrykingdow 2017-09-15 02:37

    mark一下,等待大神回答

    点赞 评论 复制链接分享
  • xyz_dream 爱在南信 2017-09-15 02:40

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

    点赞 评论 复制链接分享
  • zy841958835 cloudyzhao 2017-09-15 03:15

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

    点赞 评论 复制链接分享
  • w172087242 little_how 2017-09-15 03:15

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

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

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

    点赞 评论 复制链接分享

相关推荐