下面你的疑问和下面的问题一致,那么这篇文章这是你所需要的。
问题
- FormData的作用是什么?
- FormData的无论把数据包装成什么样子,数据总要通过网络才能发送。那么它的请求头和请求体是什么样子?
问题1解答:
FormData的作用和form表单的作用是一样。不同点是我们拿js来操作FormData,灵活性是form表单无法比拟的。
问题2解答:
(1).在请求头中设置Content-Type值
Content-Type:“multipart/form-data;boundary=----"+一段随机的字母
上面的boundary正如字面的意思一样,就是一个分界的意思,分开每一个键值对数据。boundary是一个变量,可以是一串随机数,不过FormData默认是四个"-"加一串随机数
(2). 请求体的内容是:
请求体的结束为: --boundary--
对于发送的数据有两种类型,一种为文本,一种为文件
文本的类型的请求体为:
--boundary[换行]
Content-Disposition:form-data;name=“数据的键”[换行]
[换行]
数据的值[换行]
文件类型的请求体为:
—boundary[换行]
Content-Disposition:form-data;name=“数据的键”;filename=“文件名”[换行]
[换行]
Content-Type:*/*[换行]
[换行]
文件内容的二进制
文本类型的数据和文件类型的数据是可以一起发送的。这一点很棒。比如发送的数据为:
{
username:123456,
password:67890,
picture:文件数据(其实这里是将文件转换为二进制了)
}
在请求体中为:
--boundary
Content-Disposition:form-data;name="username"
123456
--boundary
Content-Disposition:form-data;name="password"
67890
--boundary
Content-Disposition:form-data;name="picture";filename="上传的文件名"
Content-Type:image/jpeg;
对图片进行二进制编码后的数据
--boundary--