如何为GB /文件大小选择application / x-www-form-urlencoded / multipart / form-data?

时间:2016-09-16 07:23:58

标签: http post http-headers url-encoding

我发送一些视频文件(大小甚至可能是GB),application/x-www-form-urlencoded超过HTTP POST

以下链接link表明,当我们使用非字母数字内容时,最好通过Multipart表单数据进行传输。

  1. 哪种编码更适合传输此类数据?

  2. 另外,我如何找到编码数据的长度(用application/x-www-form-urlencoded编码的数据)?

  3. 对二进制数据进行编码会花费很多时间吗?

  4. 通常,编码会跳过非字母数字字符和其他字符。那么,我们可以跳过二进制数据(如视频)的编码吗?我们怎么能跳过它?

1 个答案:

答案 0 :(得分:3)

x-www-form-urlencoded表单数据集中的条目值视为字节序列(八位字节)。
在可能的256个值中,只剩下66个或仍然编码为单个字节值,其他值由其代码点值的十六进制表示替换。 这通常需要三到五个字节,具体取决于编码 因此,平均(256-66)/ 256或74%的文件将被编码为占用原始空间的三到五。 但是,这种编码没有标题,也没有明显的开销。

multipart/form-data的工作原理是将数据分成几部分,然后找到一个不会出现在所述部分中的任何长度的字符串。
这种字符串称为边界,它用于分隔部件的末端,即作为八分之一的流传输。
因此,该文件主要以发送方式发送,对于足够大的数据,可忽略不计的大小开销。

缺点是用户代理需要找到合适的边界,但是如果给定一个长度 k 的字符串,则只有2 -8k 的概率在统一生成的二进制文件中查找该字符串 因此,用户代理可以简单地生成随机字符串并进行快速搜索并利用网络传输时间来隐藏搜索的延迟。

  1. 您应该使用multipart/form-data
  2. 这取决于您使用的平台,一般情况下,如果您无法访问请求正文,则必须重新执行自我编码。
  3. 对于multipart/form-data编码,有一点,通常可忽略不计(与传输时间相比)开销。