当前位置:网站首页>为什么图片传输要使用base64编码
为什么图片传输要使用base64编码
2022-07-04 12:51:00 【诗人不写诗】
一、背景知识
一般使用HTTP协议,传输的是字符文本或二进制数据,这2种场景覆盖了几乎所有使用HTTP协议的场景。HTTP协议规定,使用Content-Type请求头来约定传输消息的类型,这决定了请求方如何组织数据(编码和格式)以及接收方如何解析数据。Content-Type常用的取值有如下几种:
1、application/x-www-form-urlencoded
这种方式发送的数据在url上拼接,以key1=val1&key2=val2 的方式进行编码,key和val都进行了 URL转码,这是一种表单提交方式,表单意思是有多个值。
2、multipart/form-data
从名字上看,传输的数据是多份的,且是表单的格式,这种方式其实是一个功能强大的方式,几乎可以满足所有数据传输要求,只是使用起来不太直接,所以我们只使用这种方式来提交文件,因为文件只能以字节流的形式传输,以传输一个文件为例,需要一个key,可以命名为myFile,然后需要定义value 类型和内容,类型是fille,内容就是文件字节流。服务方需要先根据myFIle取出文件,然后根据类型解析。
3、application/json
这种方式将数据以json格式组织,放在body里发送。
4、text/xml
这种方式将数据以xml格式组织,放在body里发送,这种格式逐渐被json取代,因为,json格式更加简洁明了。
二、实际使用
我们在传输图片时,有可能是前后端交互,有可能是2个后端交互,处理方式通常不同,由于前端负责界面交互,在发送HTTP请求时通常具备丰富的Content-Type,所以前端在发送图片时,就会使用multipart/form-data这种方式,这也是前后端默认的规则。
但是在2个后端进行交互时,默认的数据格式是application/json,所以对图片这种数据就要进行转化,通常,我们在得到了图片的字节流byte[ ]后,不会在json中直接传输byte[ ],因为担心传输过程中,有服务对其进行隐式编码然后解码,这就导致字节流发生了变化,所以我们在传输源头就进行base64编码,因为base64使用的ASCII编码是所有编码方式都支持的,即使传输过程中有服务对其进行编解码,也能原样还原。所以使用base64编码是一种安全策略,但是base64会导致体积增大约三分之一。
另外,base64也是浏览器直接支持的一种格式。如下可以直接展示。
边栏推荐
- Can mortgage with housing exclude compulsory execution
- 程序员的焦虑
- JVM memory layout detailed, illustrated, well written!
- Doctoral application | West Lake University Learning and reasoning system laboratory recruits postdoctoral / doctoral / research internship, etc
- R语言dplyr包summarise_if函数计算dataframe数据中所有数值数据列的均值和中位数、基于条件进行数据汇总分析(Summarize all Numeric Variables)
- 392. 判断子序列
- 学习项目是自己找的,成长机会是自己创造的
- Product identification of intelligent retail cabinet based on paddlex
- Understand chisel language thoroughly 03. Write to the developer of Verilog to chisel (you can also see it without Verilog Foundation)
- [R language data science]: cross validation and looking back
猜你喜欢
![[antd] how to set antd in form There is input in item Get input when gourp Value of each input of gourp](/img/eb/11e5da1c5e897c5f6a18d49125925f.png)
[antd] how to set antd in form There is input in item Get input when gourp Value of each input of gourp

基于PaddleX的智能零售柜商品识别
![[FAQ] summary of common causes and solutions of Huawei account service error 907135701](/img/43/1a9786c89a5ab21d1fb8903cb7b77e.png)
[FAQ] summary of common causes and solutions of Huawei account service error 907135701

Deming Lee listed on Shenzhen Stock Exchange: the market value is 3.1 billion, which is the husband and wife of Li Hu and Tian Hua

TestSuite and testrunner in unittest

華昊中天沖刺科創板:年虧2.8億擬募資15億 貝達藥業是股東

The font of markdown grammar is marked in red

1200. Minimum absolute difference

【Matlab】conv、filter、conv2、filter2和imfilter卷积函数总结

MySQL version 8 installation Free Tutorial
随机推荐
忠诚协议是否具有法律效力
Fs4059c is a 5V input boost charging 12.6v1.2a. Inputting a small current to three lithium battery charging chips will not pull it dead. The temperature is 60 ° and 1000-1100ma is recommended
golang fmt. Printf() (turn)
go语言中的文件创建,写入,读取,删除(转)
Excel快速合并多行数据
华昊中天冲刺科创板:年亏2.8亿拟募资15亿 贝达药业是股东
BLOB,TEXT GEOMETRY or JSON column 'xxx' can't have a default value query 问题
Can mortgage with housing exclude compulsory execution
Introducing testfixture into unittest framework
Applet live + e-commerce, if you want to be a new retail e-commerce, use it!
JVM memory layout detailed, illustrated, well written!
奇妙秘境 码蹄集
Haobo medical sprint technology innovation board: annual revenue of 260million Yonggang and Shen Zhiqun are the actual controllers
2022 hoisting machinery command examination simulation 100 questions simulation examination platform operation
使用默认路由作为指向Internet的路由
GCC【6】- 编译的4个阶段
Gorm 读写分离(转)
Variable promotion and function promotion in JS
[antd step pit] antd form cooperates with input Form The height occupied by item is incorrect
[FAQ] summary of common causes and solutions of Huawei account service error 907135701