文件上传的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框填写完毕,再提交整个表单的话,有两种方式! 方式一:点击上传按钮的 ...
- 表单多文件上传样式美化 && 支持选中文件后删除相关项
开发中会经常涉及到文件上传的需求,根据业务不同的需求,有不同的文件上传情况. 有简单的单文件上传,有多文件上传,因浏览器原生的文件上传样式及功能的支持度不算太高,很多时候我们会对样式进行美化,对功能进 ...
随机推荐
- Three.js 进阶之旅:页面平滑滚动-王国之泪 💧
声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 摘要 浏览网页时,常被一些基于鼠标滚轮控制的页面动画所惊艳到,比如greenso ...
- 2021-05-27:定义何为step sum?比如680,680+68+6=754,680的step sum叫754。
2021-05-27:定义何为step sum?比如680,680+68+6=754,680的step sum叫754.给定一个整数num,判断它是不是某个数的step sum? 福大大 答案2021 ...
- defer有什么用呢
1. 简介 本文将从一个资源回收问题引入,引出defer关键字,并对其进行基本介绍.接着,将详细介绍在资源回收.拦截和处理panic等相关场景下defer的使用. 进一步,介绍defer的执行顺序,以 ...
- ABP - 模块加载机制
Abp是一个基于模块化开发的应用程序框架,提供了模块化基础的架构和模块化加载的引擎. 理解模块 一个模块是对一个功能点的封装,可以独立成为一个包,实现了松耦合的代码组织方式.Abp框架的基本思想就是模 ...
- MD5加密后为0e开头的字符串
QNKCDZO 0e830400451993494058024219903391 s878926199a 0e545993274517709034328855841020 s ...
- harbor改造为https---血泪史
- Dubbo远程调用在IDEA无法打断点怎么破
以下是如何在IDEA中在Dubbo的分布式环境中设置远程调试的步骤: 1.首先,你需要在启动提供者服务时,加入一些JVM参数以开启调试服务.这些参数应该在你的启动脚本或者命令中.以下是一个常见的示例 ...
- js递归生成树形结构
先看结果 结果 [ { "id": 1, "title": "张三", "parent_id": -1, "c ...
- 2. Tomcat-Servlet
1. Tomcat 目录结构说明: bin 可执行文件目录 conf 配置文件目录 lib 存放 lib 的目录 logs 日志文件目录 webapps 项目部署的目录 work 工作目 ...
- Linux下AWK、SED、GREP、FIND命令详解
AWK AWK是一个优良的文本处理工具,Linux和Unix环境中现有的功能最强大的数据处理引擎之一. 语法 awk [选项参数] 'script' var=value file(s) 或 awk [ ...