Base64和Multipart有什么区别?

27

请问有人能解释一下 Base64Multipart 的优势吗?

我知道 MultipartBase64 更快......

但仍然有很多开发者在使用 Base64...我阅读了两个文档,但仍然不是很清楚。


2
你不能将Base64和Multipart进行比较,它们之间没有任何关系。 - greenapps
3个回答

44
Base64
Base64是一种将二进制数据编码为ASCII字符格式的方法,通过将其转换为基数64表示形式来实现。 我建议您不要将Base64用于向服务器上传大文件/数据,因为它会将整个数据转换并发送到服务器。
Multipart
Multipart是一种以字节形式将文件/数据上传到服务器的方法。Multipart/form-data适用于表单,因此您可以在多部分表单中发送包括“常规”数据在内的所有内容。

1
@Mariyappan,不用谢。如果您认为这个答案对您有帮助,请不要忘记接受它。 :) - Maraj Hussain
1
值得注意的是,在大多数(所有?)情况下,二进制multipart/form-data数据都以base64编码。 - Matthew
1
“大文件/数据”是什么意思?> 5mo?> 10mo?> 500mo? - PierreD
@PierreD 大小相对于年份、客户端的互联网速度等而言。多部分存在是为了将文件分成多个部分,逐个发送,这样你就可以展示进度,并且每个部分都可以独立处理。所以假设在慢速网络上不显示任何进展,那么 5mb 到 10mb 对于图像来说已经足够大了。 - KeitelDOG

7

先生,您能告诉我什么是可序列化,为什么我们要使用它吗? @pat_b13 - demo
2
序列化是用于将数据从一个组件传输到另一个组件(例如从服务器到智能手机)的方法。它以一种两个组件都能理解的形式进行,通常使用ASCII格式,因为这种格式已经很长时间以来被广泛采用。Base64会将您的数据转换成一串ASCII字符流,几乎可以被任何计算机组件读取。 - pat_b13
谢谢先生。我很抱歉打扰您先生。我认为反序列化意味着(移动到服务器的数据传输或其他吗?请您告诉我好吗?谢谢。 - demo
3
反序列化是序列化的相反过程。发送组件通过序列化数据来传输,而接收方通过对数据流进行反序列化处理。整个过程称为“序列化”。由于ASCII是常见的字符编码,因此它被用于序列化过程中。Base64仅包含ASCII字符,因此它可用于将您的数据转换为可以轻松进行序列化和反序列化的形式。 - pat_b13

-1
Base64编码: Base64编码是一种将二进制数据表示为ASCII文本格式的方法。它将二进制数据转换为基于文本的格式,使用一组有限的字符,如A-Z,a-z,0-9,+,/,以及填充字符"="。
优点: - 适用于在JSON或XML等基于文本的格式中嵌入二进制数据。 - 确保二进制数据可以在可能无法很好处理二进制数据的环境中安全传输。
缺点: - 数据大小增加约33%,因为二进制数据被表示为文本。 - 对于非常大的文件来说,可能不是最高效的选择,因为数据大小增加。
Base64编码在需要在结构化的基于文本的文档中包含二进制数据时非常有用,例如在JSON有效负载中嵌入图像或其他二进制资源。
多部分文件上传: 多部分文件上传是一种在HTTP请求中发送二进制文件的标准方法。它使用"multipart/form-data"内容类型进行HTTP POST请求。在这种方法中,二进制文件直接作为部分包含在请求体中,您可以添加元数据,如文件名和内容类型。

- 优点:

  • 对于上传大型二进制文件非常高效,因为它不会增加数据大小。
  • 支持在单个请求中发送多个文件。
  • 提供了灵活性,可以包含有关上传文件的元数据。

缺点:

  • 与Base64编码相比,需要额外的HTTP头和更复杂的请求结构。

  • 在结构化的文本格式(如JSON)中嵌入二进制数据可能不那么直观。

当您需要高效传输二进制文件,特别是大型文件,并且需要有关这些文件的元数据时,多部分文件上传是首选。它通常用于用户通过Web表单上传图像、文档或其他文件的场景。

当您需要高效传输二进制文件,特别是大型文件,并且需要有关这些文件的元数据时,多部分文件上传是首选。它通常用于用户通过Web表单上传图像、文档或其他文件的场景。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接