为什么常用Formdata对象来上传图片
一、上传的数据体格式Content-Type
1.application/x-www-form-urlencoded
2.application/json
3.multipart/form-data
以上三种类型旨在告诉服务器需要接收的数据类型同事要采用何种类型的解析方式。
二、理解常见的三种Content-Type
application/x-www-form-urlencoded :会在url上拼接字符串,如:k=123&c=12241,同时对于中文还会转码。
application/json:直接会在请求体中 添加object对象 如: { a: 123, b: 456 }
multipart/form-data: 在network中可以看到添加带数据类型等各类标识的文件类型字符串请求体 告诉服务器端接收对象是一个文件数据流
三、如果采用JSON来传递file会发生什么
模拟一次input文件上传:
input type="file" id="file" multiple onchange="change(this)"/>
<script>
var json = {}
function change(t,event){
console.log(t.files)
console.log(t.value)
json.file = t.files[0]
console.log(json);
}
</script>
得到的只是一个描述性JSON对象,根本就不是一个文件对象。
如果说一定得需要用json来传递的话,那么就必须得把这个原生的file对象进行转码,例如:base64,然后后端在接收的时候按照json来解析,获取那一段字符串之后重新转码生成图像文件,过程确实繁琐了。
四、采用FormData
采用formdata的话会把本次所有的form表单统一作为一个类型去发送,例如form action enctype采用FormData数据对象,那么在解析的时候就很好解析了,接收的是文件流,那么也是按文件流进行处理,服务端与客户端都省事了。
————————————————
版权声明:本文为CSDN博主「Museions」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/museions/article/details/125800271
最新文章
- SQL Server 2005 数据库 可疑状态
- c# 获取 本周、本月、本季度、本年 的开始时间或结束时间
- ICEM(2)—机翼翼稍网格绘制
- jenkins之安装篇
- 常用vi编辑命令
- 使用WebRTC实现电脑与手机通过浏览器进行视频通话
- hdu 4455 Substrings(找规律&;DP)
- HTML静态网页(图片热点、网页划区、拼接及表单的使用)
- spring和mybatis整合进行事务管理
- 大规模集群管理工具Borg
- 【拓扑排序】【线段树】Gym - 101102K - Topological Sort
- 编程范式:命令式编程(Imperative)、声明式编程(Declarative)和函数式编程(Functional)
- Django模板修炼
- Problem A: 重载字符的加减法
- jdk环境变量的设置
- iptables的增删改查
- steps/train_sat.sh
- C#学习-面向对象
- 使用Phar来打包发布PHP程序
- [mysql5.6]主从更换ip之后重新建立同步【转】
热门文章
- 记录 mysql修改密码报错问题 (ERROR 1054 (42S22): Unknown column &#39;password&#39; in &#39;field list&#39;)
- 20200420关于mysql突然停止服务的记录
- unity工程多开Bat
- Linux 升级 gcc g++
- linux安装oracle客户端
- jupyter notebook 切换环境
- Chrome浏览器提示您的连接不是私密连接解决办法
- 修改python下载镜像源
- 开启Runjar , 使用beeline连接hive
- git bash 笔记