关于获取文件上传的问题

关于获取文件上传的问题

老师你好,我想问关于文件上传前后台交互的问题。

http://img1.sycdn.imooc.com//climg/5e8f392b09b29db907540453.jpg

http://img1.sycdn.imooc.com//climg/5e8f39370949f08005400300.jpg

上面两张图的formdate表示的是一个意思吗?

http://img1.sycdn.imooc.com//climg/5e8f399e09aac7a706760188.jpg

上图箭头所指为什么选择用requestparam呢?requestbody和requestparam使用上有什么不同呢?我百度了一下没看到什么优质回答,老师可以给一个通俗易懂的解释吗?非常感谢!

正在回答

登陆购买课程后可参与讨论,去登陆

5回答

同学你好!

  1. 这里是spring上传文件的方式,(springboot是spring的衍生物),同学可以直接在网上搜索一下spring上传文件的方式。学习一下。

  2. 咱们之前学习servlet时,上传文件的数据是不能通过request.getParameter()来获取。但是在spring中这种差异会被springmvc处理掉,springmvc底层自动完成数据的获取,以及赋值。

  3. 建议同学在学习时,如果遇到一些和之前不一样的知识,建议你先接受和学会当前接触的这种方式。因为你所看到的差异其实都可以理解为框架给咱们提供的不同方式,它们最底层仍然还servlet。

祝学习愉快~



提问者 不停奔跑的小恐龙 2020-04-12 22:19:27

http://img1.sycdn.imooc.com//climg/5e93224409ccd42b10900270.jpg

按照图上的写法也是可以直接接收的,这个file就是直接前端传file类型的数据过来,可能是springboot对MultipartFile有特殊的支持。

好帮手慕阿满 2020-04-11 14:54:34

同学你好,@RequestParam()还有作用是将请求参数绑定到方法参数上。

form表单提交数据,如果只是普通的数据,在后台可以使用request.getParameter()获取。使用@RequestParam()注解的效果和request.getParameter()相同。

如果是提交文件,需要对文件进行处理。比如配置CommonsMultipartResolver文件上传解析器。

经过测试,@RequestParam()可以接收form表单提交的数据,不论是get提交或者post提交。

祝:学习愉快~


好帮手慕阿满 2020-04-10 19:14:44

同学你好,如果传到后台的数据使用POST方式,并且包含file那么应该是在请求体里面,不能使用@RequestParam()接收。

祝:学习愉快~

  • 问题是确实就是这么用的呢。。。。,老师可以看看我的两张图片。所以我才想不明白,老师可以和同事讨论一下看看
    2020-04-10 19:17:53
好帮手慕阿满 2020-04-10 14:55:37

同学你好,第一张截图是使用ajax的方式上传文件,第二章是使用form表单上传文件,两种方式都可以用来上传文件。

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。@RequestParam()是从请求头中获取参数。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 前端使用GET方式提交,后台可以使用@RequestParam()获取请求头中的数据。 关于这一点我不太理解,请求头里面是放一些简单的key:value的吧,如果传到后台的数据使用POST方式,并且包含file那么应该是在请求体里面对吗?这个时候为什么还能用@RequestParam()来接受呢?
    2020-04-10 17:43:31
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师