我发送一些视频文件(大小甚至可能是GB),application/x-www-form-urlencoded
超过HTTP POST
。
以下链接link表明,当我们使用非字母数字内容时,最好通过Multipart表单数据进行传输。
哪种编码更适合传输此类数据?
另外,我如何找到编码数据的长度(用application/x-www-form-urlencoded
编码的数据)?
对二进制数据进行编码会花费很多时间吗?
通常,编码会跳过非字母数字字符和其他字符。那么,我们可以跳过二进制数据(如视频)的编码吗?我们怎么能跳过它?
答案 0 :(得分:3)
x-www-form-urlencoded
将表单数据集中的条目值视为字节序列(八位字节)。
在可能的256个值中,只剩下66个或仍然编码为单个字节值,其他值由其代码点值的十六进制表示替换。
这通常需要三到五个字节,具体取决于编码
因此,平均(256-66)/ 256或74%的文件将被编码为占用原始空间的三到五。
但是,这种编码没有标题,也没有明显的开销。
multipart/form-data
的工作原理是将数据分成几部分,然后找到一个不会出现在所述部分中的任何长度的字符串。
这种字符串称为边界,它用于分隔部件的末端,即作为八分之一的流传输。
因此,该文件主要以发送方式发送,对于足够大的数据,可忽略不计的大小开销。
缺点是用户代理需要找到合适的边界,但是如果给定一个长度 k 的字符串,则只有2 -8k 的概率在统一生成的二进制文件中查找该字符串 因此,用户代理可以简单地生成随机字符串并进行快速搜索并利用网络传输时间来隐藏搜索的延迟。
multipart/form-data
。multipart/form-data
编码,有一点,通常可忽略不计(与传输时间相比)开销。