文件上传的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属性的内容 , 更多有关 前端、网络协议 的内容可以参考我其它的博文,持续更新中~
文件上传的multipart/form-data属性,你理解了吗的更多相关文章
- js文件上传原理(form表单 ,FormData + XHR2 + FileReader + canvas)
目录 form表单上传 FormData + XHR2 + FileReader + canvas 无刷新本地预览压缩上传实例 目前实现上传的方式 浏览器小于等于IE9(低版本浏览器)使用下面的方式实 ...
- 表单文件上传编码方式(enctype 属性)
enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码. 如下: <form action="upload.php" method="post&quo ...
- Spring MVC 文件上传简单示例(form、ajax方式 )
1.Form Upload SpringMVC 中,文件的上传是通过 MultipartResolver 实现的,所以要实现上传,只要注册相应的 MultipartResolver 即可. Multi ...
- ExtJs文件上传(Ext.ux.form.FileUploadField)
Ext.ux.form.FileUploadField = Ext.extend(Ext.form.TextField, { /** * @cfg {String} buttonText The b ...
- SpringMVC 文件上传(Multipart)
作者QQ:1095737364 QQ群:123300273 欢迎加入! 平时用的上传一般是输入流和输出流上传,今天使用的是transferTo方法: Multipart请求是在控制器实例 ...
- 文件上传时jquery.form.js中提示form.submit SCRIPT5: 拒绝访问
利用其它控件触发file的click事件来选择文件后,使用jquery.form.js中的submit方法提交时IE报错:form.submit SCRIPT5: 拒绝访问,其它浏览器正常, < ...
- Spring 4 官方文档学习(十一)Web MVC 框架之multipart(文件上传)支持
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-multipart 1.简 ...
- 005-html+js+spring multipart文件上传
一.概述 需求:通过html+js+java上传最大500M的文件,需要做MD5 消息摘要以及SHA256签名,文件上传至云存储 1.1.理解http协议 https://www.cnblogs.co ...
- form里面文件上传并预览
其实form里面是不能嵌套form的,如果form里面有图片上传和其他input框,我们希望上传图片并预览图片,然后将其他input框填写完毕,再提交整个表单的话,有两种方式! 方式一:点击上传按钮的 ...
- 表单多文件上传样式美化 && 支持选中文件后删除相关项
开发中会经常涉及到文件上传的需求,根据业务不同的需求,有不同的文件上传情况. 有简单的单文件上传,有多文件上传,因浏览器原生的文件上传样式及功能的支持度不算太高,很多时候我们会对样式进行美化,对功能进 ...
随机推荐
- 高级Java程序员必问,Redis事务终极篇
1. 简介 1.1 什么是Redis事务 Redis事务(Transaction)通过将多个Redis操作封装为一个原子性的操作序列,确保在事务执行过程中,不会受到其他客户端的干扰.从而在保证数据一致 ...
- cryptohack wp day(3)
第二节模运算----第一题( GCD ) 在做这道题前,了解下欧几里得算法: 欧几里得算法,也叫辗转相除法,用于求解两个非负整数a和b的最大公约数(Greatest Common Divisor, G ...
- 网站七牛云CDN加速配置
首先进入七牛云管理平台 1.添加域名 2.添加需要加速的域名,比如我添加的是gechuang.net 3.源站配置,这里要用IP地址,访问的目录下面要有能访问测试的文件 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 ...
- 2022-04-15:给定一个非负数组arr,学生依次坐在0~N-1位置,每个值表示学生的安静值, 如果在i位置安置插班生,那么i位置的安静值变成0,同时任何同学都会被影响到而减少安静值, 同学安静值
2022-04-15:给定一个非负数组arr,学生依次坐在0~N-1位置,每个值表示学生的安静值, 如果在i位置安置插班生,那么i位置的安静值变成0,同时任何同学都会被影响到而减少安静值, 同学安静值 ...
- Django 14天从小白到进阶- Day1 Django 初识
来自作者:金角大王 本节内容 Http原理介绍 自行开发一个Web框架 WSGI介绍 Django介绍 MVC/MTV Django安装 创建项目与APP 开发第一个页面 为什么学Django? Go ...
- pages.json 文件:pages 节点
pages uni-app 通过 pages 节点配置应用由哪些页面组成,pages 节点接收一个数组,数组每个项都是一个对象,其属性值如下: 属性 类型 默认值 描述 path String 配 ...
- 聊聊CSS 缓动函数的新成员linear()
CSS 缓动函数是一种用于控制 CSS 动画过渡效果的函数,可以让动画变得更加自然.这篇文章将介绍一种新的 CSS easing function,即 linear(),它可以模拟出更复杂的缓动效果, ...
- undefined reference to错误的解决方法
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/cserchen/article/deta ...
- XMLConfiguration -- Poco
Library : Util Package: Configuration Header : Poco/Util.XMLConfiguration.h 此配置类从 XML 文档中提取配置属性. 支持类 ...