相关:
图解 Base64 实现原理并使用 js 实现一个简单的 Base64 编码器
一直都知道在http协议中使用base64的方式传递二进制文件,虽然感觉不理解,但是也都从来没有探究过原因,今天突然看到这方面的资料,这才有了一些理解。
PS:
把带有图片的网页保存为本地的mhtml文件的时候也会同时把图片这种二进制文件直接保存为base64编码并嵌入到文本文件中。
注意:
本文并不讨论base64编码的具体格式,以及base64编码与其他格式之间的转换规则。
给出下面的解释:
引自:https://juejin.cn/post/7365074668207767602
作者:Moment
不同系统的数据处理差异
早期的通信系统和协议设计主要是基于文本数据的传输。这些系统可能无法正确处理非文本数据(如二进制文件),因为某些二进制值可能会被解释为控制字符(例如,行结束符、回车符等),这会干扰数据的正确传输和解释。
操作系统差异(如 Windows、macOS、Linux)会影响文件管理和系统调用的方式。例如,文件路径表示方法在 Windows 系统中通常使用反斜杠(\),而在 UNIX-like 系统(如 Linux 和 macOS)中使用正斜杠(/)。此外,文件系统(如 NTFS、HFS+、EXT4)的差异也会影响文件属性的支持、文件大小限制和性能表现。
总结的来说,就是http协议只能传输文本格式,即只能传输ASCII码格式,但是二进制文件中会出现在ASCII中无法显示的格式(二进制文件中的0/1出现是随机的,因此会出现不可打印的ASCII码字符,即控制字符),而这些不可显示的ASCII中的控制字符会影响早期的http协议的正常工作和交互过程的,因此不能直接把二进制文件转成ASCII格式进行http协议传输,于是就有了base64格式编码方式来讲二进制文件重新编码为base64格式后再进行http协议传输。
更多关于web通信中使用base64编码的资料建议参考:
图解 Base64 实现原理并使用 js 实现一个简单的 Base64 编码器
还有个特性,那就是base64编码后传输数据会增加:
Base64 编码后的数据比原始二进制数据大约增加 33%
标签:文件,Base64,http,二进制,base64,传输,编码方式 From: https://www.cnblogs.com/xyz/p/18492997