当前位置: 首页 > news >正文

文件上传的multipart/form-data属性,你理解了吗

form表单经常用于前端发送请求,比如:用户填写信息、选择数据、上传文件,对于不同的场景,上传数据的格式也会有些区别。

action

action 表示该请求的 url 地址,定义在form上,请求的URI,可以写完整,也可以以斜线开头,会自动拼接域名端口号。

本地通过 nodejs 在8000端口起了一个服务,当 button 的 type 为 submit 时,点击后会默认发送请求。

<form action="http://127.0.0.1:8000">
       账号: <input name="username">
       密码:<input name="password">
       <button type="submit">提交</button>
</form>

在浏览器中表单就是这样显示的,在账号密码的输入框中分别输入内容

在这里插入图片描述

点击提交按钮时,会将输入的内容自动拼接在 action 参数之后

在这里插入图片描述

method

method 属性规定了此次 HTTP 请求的方法。

  • GET 参数直接拼接在 url 后面,默认的形式
  • POST 参数放在请求体中
<form action="http://127.0.0.1:8000" method="post">
       账号: <input name="username">
       密码:<input name="password">
       <button type="submit">提交</button>
 </form>

当使用POST请求时,填写信息点击提交按钮,参数不再拼接到 url 后面,而是放到 body 中,仍然以 & 拼接。

在这里插入图片描述

enctype

enctype 决定着POST请求时,请求体的编码方式。

  • application/x-www-form-urlencoded 不写时默认属性,用&分隔参数,用=分隔键和值,字符用URL编码方式进行编码,GET请求和POST请求都可用
  • multipart/form-data 多用于文件上传,用于POST请求
<form action="http://127.0.0.1:8000" method="post" enctype="multipart/form-data">
       昵称:<input name="nickname">
       头像:<input type="file" name="photo">
       <button type="submit">提交</button>
</form>

填写信息并选择文件

在这里插入图片描述

当请求方法改为 get 时,url 上只拼接了上传文件的名称,没有将文件的具体内容发送到服务器端。

在这里插入图片描述

当请求方法为 post 时,multipart/form-data 才有着其作用,通过抓包工具追踪的HTTP流来看,请求报文的 Content-Type 中,boundary 后面有一串字符,这个字符就用于拼接用户输入、上传的数据

在这里插入图片描述

而上传的图片信息,将以二进制数据的形式传递

在这里插入图片描述

每一项数据通过两个短横线+ bounary= 后面的字符相隔,这里是----WebKitFormBoundaryBFUEET96fRvnOc3r,服务器获取数据时,通过这个标识来截取即可。

以上就是 文件上传的multipart/form-data属性的内容 , 更多有关 前端网络协议的内容可以参考我其它的博文,持续更新中~

相关文章:

  • php 小企业网站 cms/如何优化seo
  • 上海电子商务网站制作/附近电脑培训班零基础
  • wordpress功能主题/搭建网站的步骤和顺序
  • 深圳福田大型商城网站建设/南京百度竞价推广公司排名
  • 网站关键字让别人做超链接了怎么办/深圳网络推广方法
  • 微网站开发的比较总结/所有关键词
  • 复盘-----JS
  • Mysql之存储引擎
  • 【人脸识别】MVFace:一个优于CosFace和ArcFace的人脸识别损失
  • idea maven构建.jar包镜像 发布到远程Linux docker 镜像
  • python在centos下安装以及配置
  • Springboot莱昂纳多作品集推荐系统jcpqz计算机毕业设计-课程设计-期末作业-毕设程序代做
  • LC-6256. 将节点分成尽可能多的组(二分图判定+BFS)【周赛322】
  • [论文精读|顶刊论文]Relational Triple Extraction: One Step is Enough
  • 在Docker中运行Dubbo应用,详细教程,一学就会
  • Docker安装部署Redis集群
  • 数据结构—set集合
  • 【数据结构】二分搜索树