application/x-www-form-urlencoded与multipart/form-data(尚未自己验证)

实战指南:SpringBoot中form-data与x-www-form-urlencoded的接收与场景抉择 本文深入解析SpringBoot中form-data与x-www-form-urlencoded的接收方式与适用场景。通过对比编码方式、数据结构和传输效率,帮助开发者根据文件上传、二进制数据传输或纯文本表单等不同需求做出技术选型,并提供混合使用、大文件优化等高级技巧。 阅读详情

原文地址:http://hi.baidu.com/nangegehao/item/45718900b0efe5d61ef04609

一,HTTP上传的基本知识      

         在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。下边是说明: application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。 multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。 text/plain:窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。
补充form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application /x-www-form-urlencoded。

         当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1& amp; amp;name2=value2...),然后把这个字串append到url后面,用?分割,加载这个新的url。

         当action为post时候,浏览器把form数据封装到http body中,然后发送到server。

        如果没有type=file的控件,用默认的application/x-www-form-urlencoded就可以了。但是如果有 type=file的话,就要用到multipart/form-data了。浏览器会把整个表单以控件为单位分割,并为每个部分加上 Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件 name)等信息,并加上分割符(boundary)。

二,使用中需要注意的地方

       在AJAX往服务器上传数据是,设置了content-type为application/x-www-form-urlencoded,此时是对整个发 送内容作了编码,并不是对名字对应的值做了编码。因此,在服务器端,通过request.getParameter("name")的方式取值,是有问题 的。

       有两种解法办法:

1)改服务器端: 采用流的方式硬编码

InputStream stream=request.getInputStream();
InputStreamReader isr=new InputStreamReader(stream);
BufferedReader br=new BufferedReader(isr);
String str=br.readLine();  
System.out.println(str);
str=URLDecoder.decode(str,"gb2312");
System.out.println(str);
br.close();


2)改客户端:更改数据发送结构

在往服务器上发数据的时候,使用name=escape(value)的方式组对

此时在服务器代码中,通过request.getParameter("name")获得的数值,就不用编码了

从Postman测试到联调上线:SpringBoot处理form-data/x-www-form-urlencoded的完整工作流 本文详细介绍了SpringBoot处理form-data和x-www-form-urlencoded的完整工作流,从Postman测试到联调上线的全流程实践。通过用户注册案例,解析混合传输策略、接口设计、测试方法及生产环境部署,帮助开发者高效处理表单数据传输与文件上传需求。 阅读详情

相关推荐

生产环境下oracle19c rac恢复节点2

现状:目前节点1数据库集群服务处于正常,节点2服务器由于系统故障无法恢复,确认系统重装。目标:不影响业务的情况下,重新把节点2添加回集群中。

sqlora的专栏 867

为OkGo网络请求增加自定义log功能

OkGo是基于Okhttp3的封装,所以只需要增加自定义拦截器就可以实现自定义log。(OkGo有一个默认的log拦截器HttpLoggingInterceptor,如果没有特别需求则无需自定义) 第一步自定义拦截器(参考OkGo中的拦截器实现,自己决定具体的打印格式及控制方式) public class MyHttpLogInterceptor implements Interceptor...

tywfeng的专栏 1710

硬件测试之—纹波测试为什么不要使用接地夹子

示波器为什么不推荐使用接地夹

qq_19294353的博客 2988

四种常见的 POST 提交数据方式

HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。 我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主

birthmarkqiqi的专栏 3480

2025年全国青少年信息素养大赛复赛真题(算法创意实践挑战赛C++初中组试卷1:带解析)(7月6日试卷)

2025年全国青少年信息素养大赛复赛真题(算法创意实践挑战赛C++初中组试卷1:带解析)(7月6日试卷)

王老师青少年编程 1960

Python遥感图像处理应用篇(二十三):Python+GDAL 批量拼接图像

遥感影像拼接分多种不同的情况,比如比较常用的是两幅影像拼接或者多个图像合并为一个图像。GDAL中实现影像拼接的方式也有多种,比如常用可以通过numpy读取影像数组,并计算各个图像的numpy数组范围,合并多个numpy数组为一个最终的结果,并将其重新输出为一幅新的图像,即可实现图像的拼接。另外比较方便的一种方法便是使用GDAL.warp()函数方法。这个函数的功能很多,可以实现多种不同的目的,比如用于坐标系转换、投影变换、图像合并与镶嵌、地理范围裁剪、更改分辨率、矢量裁剪等多种功能。这些功能可以通过设置Op

soderayer的博客 4643

HTML表单提交数据中application/x-www-form-urlencoded和multipart/form-data的区别

在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。 下边是说明: application/x-www-form-urlencoded : 窗体数据被编码为名称/值对。这是标准的编码格式。 multipart/form-data : 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。 text/plai

HDK2016的博客 6663

组合预测模型 | LSTM-XGBoost长短期记忆神经网络结合极限梯度提升树时间序列预测(Matlab程序)

组合预测模型 | LSTM-XGBoost长短期记忆神经网络结合极限梯度提升树时间序列预测(Matlab完整程序)

前程算法屋的博客 2180

关于Content-Type中application/x-www-form-urlencoded 和 multipart/form-data的区别及用法

Form的enctype属性表示页面表单数据向服务端传输时的编码方式,常用有两种:application/x-www-form-urlencoded 和 multipart/form-data,默认为application/x-www-form-urlencoded。 1、application/x-www-form-urlencoded: 窗体数据被编码为名称/值对,这是标准且默认的编码格

程序老兵的博客 2万+

29. 如何通过 ABAP 代码给 SAP OData 元数据增添注解

我们先看下效果,在 MPC_EXT 类的 DEFINE 方法里编写 ABAP 代码之后,用 Postman 使用 url 访问 OData metadata,在返回的数据里,能看到我们用 ABAP 代码添加的自定义注解。你好,请问可以不可以在odata里面通过什么设置,从而自动给metadata.xml中加上注解,实现value help的功能,还是说每次需要在metadata.xml中修改?的词汇引用,然后为命名空间 com.sap.vocabularies.UI.v1 声明了一个别名。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1660

[Dify] 【实战笔记】优化 Excel 电话簿类知识库检索效果的实战技巧

摘要:文章分析了Dify知识库在处理Excel结构化数据(如电话簿)时出现的检索异常问题,发现主要原因是默认召回多条记录且缺乏精准匹配机制。提出两个核心解决方案:1)优化知识库召回参数,包括调整TopK值、提高关键词权重等;2)设计精准提示词模板,明确约束模型行为范围。通过对比测试验证了优化效果,并给出进阶建议如数据格式转换、输出格式化等。最后针对知识检索类AI应用提供了场景适配建议。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 368

multipart/form-data和application/x-www-form-urlencoded的区别

FORM元素的enctype属性指定了表单数据向服务器提交时所采用的编码类型,默认的缺省值是“application/x-www-form-urlencoded”。     然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。      在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持

妙心的专栏 4814

鸿蒙ArkUI内部API10以及11开发,输入框唤起输入法键盘,页面会被顶起的解决办法

鸿蒙ArkUI内部API10以及11开发,输入框唤起输入法键盘,页面会被顶起的解决办法

zmx781284440的博客 3215

form-data、x-www-form-urlencoded、raw的区别

http请求 场景: 前端:SDK通过http发送请求/页面Ajax提交。 后台:Springboot服务,Rest风格,需在controller层之前拦截请求。 Springboot支持Rest风格给编码带来了很好的便捷性,@RequestBody让我们可以直接以application/json请求并在到达controller层获得已反序列化的对象,当有拦截的需求,这种方式却不再奏效。 ...

石头视角 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

php post 编码,php curl POST 编码方式 multipart/form-data与application/x-www-form-urlencode的区别...

背景CURL在 a.php 中以 POST方式向 b.php 提交数据,但b.php无法接收到数据,而 CURL 操作显示成功。原来,"传递一个数组到CURLOPT_POSTFIELDS,CURL会把数据编码成 multipart/form-data,而传递一个URL-encoded字符串时,数据会被编码成 application/x-www-form-urlencoded"。但是在使用PHP C...

weixin_39992957的博客 781

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Spring中的@RequestBody注解application/json与常规的HTTP方法的传值方式

上周进行项目开发的时候,发现前端的含有文件的表单数据时后台接收报错,异常的大致意思是表单类型不支持,我也是有点蒙逼,以前也遇到过这种问题,加上@RequestBody就可以,所以这次我也加上了@RequestBody注解,结果还是报错,这时前端发消息过来,告诉我不能加@RequestBody,我去掉之后果然好了,好吧。一直没弄明白什么时候要加@RequestBody什么时候不要加,趁着这个迭代的任...

細水、長流√的专栏 5489

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

HTML表单底层协议解析:从成功控件到multipart编码

HTML表单是Web最基础的通信机制,其本质是一套浏览器与服务器间约定的数据提交协议,涵盖语义定义、编码规则(application/x-www-form-urlencoded和multipart/form-data)、HTTP方法语义(GET/POST)及安全边界。理解‘成功控件’筛选逻辑与enctype编码差异,是解决字段丢失、文件乱码、Model Binding失败等高频问题的关键。该协议独立于JavaScript和前端框架,构成所有现代表单库(如React Hook Form、Vue UseForm

世范水晶 724

php form post urlencode,php curl POST multipart/form-data与application/x-www-form-urlencode的区别...

背景CURL在 a.php 中以 POST方式向 b.php 提交数据,但b.php无法接收到数据,而 CURL 操作显示成功。原来,"传递一个数组到CURLOPT_POSTFIELDS,CURL会把数据编码成 multipart/form-data,而传递一个URL-encoded字符串时,数据会被编码成 application/x-www-form-urlencoded"。但是在使用PHP ...

weixin_42310231的博客 434

一文详解 requests 库中 json 参数和 data 参数的用法

当中,requests请求方法,当发送post/put/delete等带有请求体的请求时,有json和data2个参数可选。第二步:发起x-www-from-urlencoded格式的http请求 - 使用data参数。第一步:找到一个application/x-www-from-urlencoded请求的接口。第二步:发起multipart/form格式的http请求 - 使用data和files参数。现用flask设计一个简单的xml格式的登录接口,请求参数就是用户名和密码。众所周知,http请求的。

LAMO 2795

FoundationDB Java 绑定实战:基于 Subspace 与 Tuple 构建支持稀疏数据的二维表(Tables)

本文围绕 FoundationDB 官方“设计食谱”(Design Recipes)中的 **Tables(二维表)** 数据建模模式展开,以 Java 绑定([bindings/java](https://link.gitcode.com/i/d9d0b3619e2e5f38f387eba43362b1fa))为例,讲解如何在 FoundationDB 上为带行标签与列标签的稀疏二维数据构建高效

gitblog_00619的博客 1104

FastAPI参数类型与请求格式详解:Query、Form、Body、File与Content-Type的对应关系

摘要:本文详细解析FastAPI框架中各类参数(Query、Form、Body、File等)与HTTP请求格式的映射关系。通过代码示例说明不同参数类型的应用场景:Query处理URL查询字符串并支持验证规则;Form接收表单数据;Body解析JSON请求体;File管理文件上传。

weixin_67327688的博客 1265
上一篇: 根据字节值判断文件的编码方式
下一篇: 常用的SQL
saygoodbyetoyou
博客等级 码龄17年 78粉丝 27原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值