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属性的内容 , 更多有关 前端网络协议 的内容可以参考我其它的博文,持续更新中~

文件上传的multipart/form-data属性,你理解了吗的更多相关文章

  1. js文件上传原理(form表单 ,FormData + XHR2 + FileReader + canvas)

    目录 form表单上传 FormData + XHR2 + FileReader + canvas 无刷新本地预览压缩上传实例 目前实现上传的方式 浏览器小于等于IE9(低版本浏览器)使用下面的方式实 ...

  2. 表单文件上传编码方式(enctype 属性)

    enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码. 如下: <form action="upload.php" method="post&quo ...

  3. Spring MVC 文件上传简单示例(form、ajax方式 )

    1.Form Upload SpringMVC 中,文件的上传是通过 MultipartResolver 实现的,所以要实现上传,只要注册相应的 MultipartResolver 即可. Multi ...

  4. ExtJs文件上传(Ext.ux.form.FileUploadField)

    Ext.ux.form.FileUploadField = Ext.extend(Ext.form.TextField, { /**  * @cfg {String} buttonText The b ...

  5. SpringMVC 文件上传(Multipart)

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 平时用的上传一般是输入流和输出流上传,今天使用的是transferTo方法: Multipart请求是在控制器实例 ...

  6. 文件上传时jquery.form.js中提示form.submit SCRIPT5: 拒绝访问

    利用其它控件触发file的click事件来选择文件后,使用jquery.form.js中的submit方法提交时IE报错:form.submit SCRIPT5: 拒绝访问,其它浏览器正常, < ...

  7. Spring 4 官方文档学习(十一)Web MVC 框架之multipart(文件上传)支持

    http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-multipart 1.简 ...

  8. 005-html+js+spring multipart文件上传

    一.概述 需求:通过html+js+java上传最大500M的文件,需要做MD5 消息摘要以及SHA256签名,文件上传至云存储 1.1.理解http协议 https://www.cnblogs.co ...

  9. form里面文件上传并预览

    其实form里面是不能嵌套form的,如果form里面有图片上传和其他input框,我们希望上传图片并预览图片,然后将其他input框填写完毕,再提交整个表单的话,有两种方式! 方式一:点击上传按钮的 ...

  10. 表单多文件上传样式美化 && 支持选中文件后删除相关项

    开发中会经常涉及到文件上传的需求,根据业务不同的需求,有不同的文件上传情况. 有简单的单文件上传,有多文件上传,因浏览器原生的文件上传样式及功能的支持度不算太高,很多时候我们会对样式进行美化,对功能进 ...

随机推荐

  1. 高级Java程序员必问,Redis事务终极篇

    1. 简介 1.1 什么是Redis事务 Redis事务(Transaction)通过将多个Redis操作封装为一个原子性的操作序列,确保在事务执行过程中,不会受到其他客户端的干扰.从而在保证数据一致 ...

  2. cryptohack wp day(3)

    第二节模运算----第一题( GCD ) 在做这道题前,了解下欧几里得算法: 欧几里得算法,也叫辗转相除法,用于求解两个非负整数a和b的最大公约数(Greatest Common Divisor, G ...

  3. 网站七牛云CDN加速配置

    首先进入七牛云管理平台 1.添加域名 2.添加需要加速的域名,比如我添加的是gechuang.net 3.源站配置,这里要用IP地址,访问的目录下面要有能访问测试的文件 4.缓存配置,也就是配置缓存哪 ...

  4. 2022-12-29:nsq是go语言写的消息队列。请问k3s部署nsq,yaml如何写?

    2022-12-29:nsq是go语言写的消息队列.请问k3s部署nsq,yaml如何写? 答案2022-12-29: yaml如下: apiVersion: apps/v1 kind: Deploy ...

  5. 2022-04-15:给定一个非负数组arr,学生依次坐在0~N-1位置,每个值表示学生的安静值, 如果在i位置安置插班生,那么i位置的安静值变成0,同时任何同学都会被影响到而减少安静值, 同学安静值

    2022-04-15:给定一个非负数组arr,学生依次坐在0~N-1位置,每个值表示学生的安静值, 如果在i位置安置插班生,那么i位置的安静值变成0,同时任何同学都会被影响到而减少安静值, 同学安静值 ...

  6. Django 14天从小白到进阶- Day1 Django 初识

    来自作者:金角大王 本节内容 Http原理介绍 自行开发一个Web框架 WSGI介绍 Django介绍 MVC/MTV Django安装 创建项目与APP 开发第一个页面 为什么学Django? Go ...

  7. pages.json 文件:pages 节点

    pages uni-app 通过 pages 节点配置应用由哪些页面组成,pages 节点接收一个数组,数组每个项都是一个对象,其属性值如下: 属性 类型 默认值 描述 path String   配 ...

  8. 聊聊CSS 缓动函数的新成员linear()

    CSS 缓动函数是一种用于控制 CSS 动画过渡效果的函数,可以让动画变得更加自然.这篇文章将介绍一种新的 CSS easing function,即 linear(),它可以模拟出更复杂的缓动效果, ...

  9. undefined reference to错误的解决方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/cserchen/article/deta ...

  10. XMLConfiguration -- Poco

    Library : Util Package: Configuration Header : Poco/Util.XMLConfiguration.h 此配置类从 XML 文档中提取配置属性. 支持类 ...