form表单enctype="multipart/form-data" 时request获取不到值的框架解决

8 篇文章 0 订阅

 

问题描述:

当我们想在页面上传文件(图片)到服务器时 , 一般会选用form 表单提交, 

form 的 enctype 属性值为"multipart/form-data"(多媒体上传)

 

这样来上传一个文件/图片时没有问题, 后端可以接收到一个MultipartFile类型的值

所有的值 都是以二进制进行传递的,

问题是我们如果传文件时同时有其他input也在form表单中如文本类型的,

在request之中无法直接获取到相应表单的值

enctype:

规定了form表单在发送到服务器时候编码方式。他有如下的三个值。 
①application/x-www-form-urlencoded。默认的编码方式。但是在用文本的传输和MP3等大型文件的时候,使用这种编码就显得 效率低下。 
②multipart/form-data 。 指定传输数据为二进制类型,比如图片、mp3、文件。 
③text/plain。纯文体的传输。空格转换为 “+” 加号,但不对特殊字符编码。

参数获取不到主要是因为在使用multipart/form-data属性之后请求体发生了变化。不是key=value的形式出现所以说获取不到

 

解决方法主要有两种:

  1. 我们可以通过js代码来些修改,把我们的参数追加在url的后边
  2. 通过修改服务器端代码

我用的算是第二种, 可以自己写代码实现, 我这直接用的Spring框架的@RequestParam注解即可直接拿到相应的值!

直接把前台传过来的key值写在value上就能直接接收到并转换为想要的类型 ( 考虑是否能类型转换成功 )

更细致的原因和解决方法可以参考如下博主的博客, 原因剖析的很详细!

https://blog.csdn.net/zllww123/article/details/77587292

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值