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

1)这两个的区别是什么?

它们都是 form表单提交时enctype属性的取值  “请求体怎么编码” 的方式(决定浏览器怎么把表单字段打包发给后端,多用于POST请求)。

application/x-www-form-urlencoded(普通表单,默认)
  • 特点:把表单字段编码成 key=value&key2=value2 这种格式(会做 URL 编码,比如空格变 +,特殊字符变 %xx

  • 适合:纯文本字段(用户名/密码/搜索条件等)

  • 请求体示例

    username=tom&password=123
    
multipart/form-data(带文件/二进制)
  • 特点:把每个字段拆成“多个部分”(part),每一段都有自己的头信息;文件会以二进制形式放在某个 part 里

  • 适合:上传文件(也可以同时带普通字段)

  • 请求体特点:会有 boundary 分隔符(你在浏览器里看会很长)

简单记:
urlencoded = “一行 key=value&...”
multipart = “分块 + boundary,能装文件”


2)是不是只有 HTML 的 POST 才会有 enctype 这两个选项?

enctype<form> 的属性,它用来指定 表单提交时的编码方式,只对“会发请求体”的提交方式有意义。

  • <form method="post">:✅ enctype 才真正起作用(因为 POST 会把数据放 body 里)

  • <form method="get">:❌ 基本没意义(GET 会把字段拼到 URL 的 query 上,不用 body 编码)

所以你的感觉是对的:在 HTML 原生 form 里,enctype 基本就是给 POST 用的(尤其是上传文件时必须用)。

另外还有一个常见值:

  • text/plain(很少用)


3)HTML 表单默认用哪个?

如果你不写 enctype

<form method="post" action="/login">

默认就是:

  • application/x-www-form-urlencoded

如果要上传文件,必须写:

<form method="post" action="/upload" enctype="multipart/form-data">

4)后端接收时有什么差别?(Spring)

  • urlencoded:@RequestParam / DTO(@ModelAttribute) 很顺

  • multipart:文件用 MultipartFile

@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file,
                     @RequestParam("desc") String desc) { ... }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值