FormData你这个傀儡,你的背后是谁?

下面你的疑问和下面的问题一致,那么这篇文章这是你所需要的。

问题

  1. FormData的作用是什么?
  2. 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--

你可能感兴趣的:(FormData你这个傀儡,你的背后是谁?)