为了账号安全,请及时绑定邮箱和手机立即绑定

在SpringMVC中@RequestParam为什么可以获得文件上传的数据?

在SpringMVC中@RequestParam为什么可以获得文件上传的数据?

烙印99 2019-05-13 08:07:10
在做springmvc文件上传的时候通常都会用这种方法获得上传的文件数据//desc,file是页面上标签的id属性@RequestMapping(value="/testUpload",method=RequestMethod.POST)publicStringtestUpload(@RequestParam(value="desc",required=false)Stringdesc, @RequestParam("file")MultipartFilemultipartFile)throwsIOException{System.out.println("desc:"+desc);System.out.println("OriginalFilename:"+multipartFile.getOriginalFilename());InputStreaminputStream=multipartFile.getInputStream();System.out.println("inputStream.available():"+inputStream.available());System.out.println("inputStream:"+inputStream); return"success";}但是就我所知@RequestParam是将请求参数映射到请求处理方法的形参中常用来处理简单类型的绑定,用来处理Content-Type:为 application/x-www-form-urlencoded编码的内容。可是文件上传的时候Content-Type:为multipart/form-data,那么为什么此时@RequestParam可以得到文件数据,我个人的理解是MultipartFile的原因,可能是因为springmvc的文件上传解析器起的作用,但是我还是没理解怎么做到的可以认为@RequestParam也可以处理multipart/form-data吗。
查看完整描述

2 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

如果看下spring的源码会发现,spring在参数处理的时候会把Content-Type解析为MediaType,然后由spring框架中注册的具体RequestBodyAdviceAdapter来处理,不同的Content-Type会对应不同的RequestBodyAdviceAdapter。这个实现类实现了对上传文件的解析。
                            
查看完整回答
反对 回复 2019-05-13
  • 2 回答
  • 0 关注
  • 2457 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号