利用@RequestPart解决同时上传文件和传递参数问题

前言

写一个API接口,需要同时传递信息和文件,其实用@RequestParam+参数名字是可以解决的,但是传信息到时候如果要用一个DTO类来接收的话,就没法和@RequestParam共用了,也就接收不到文件了。因此本文主要解决如何使文件和DTO类并存。

一、@RequestPart

@RequestPart这个注解用在multipart/form-data表单提交请求的方法上,主要用来搭配springboot接收MultipartFile类型的文件。
由于RequestPart是基于表单提交的,那么就可以通过表单来接收另一个DTO类,从而避免了通过RequestParam一个一个接收变量。

二、使用步骤

直接贴代码,很简答:

    @PostMapping("XXX")
    public 返回的类 pushCar(@RequestPart @Valid final XXXDTO xXXDTO, @RequestPart("filenames") List<MultipartFile> files) {
    	//处理逻辑
        return 返回的类的实例;
    }```

利用两个RequestPart注解,分别接收正经的字段,和不正经的文件。

三、postman测试注意事项

这里面有个小坑,postman的表单是不能直接测试的,需要选择上传文件的类型后,上传两个文件。
第一个文件是:私底下打包一份DTO类的json文件。
第二个文件是:你要上传的文件们。

这里new3.json就是自己手写的DTO的json。

总结

本文主要是介绍了一下如何利用RequestPart同时接收一个类+一堆文件。

  • 19
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
回答: 在使用Postman进行测试时,可以使用@RequestPart注解和@RequestBody注解来传递参数。@RequestPart注解用于multipart/form-data表单提交请求的方法上,可以用于接收文件和其他复杂的请求域数据(如JSON、XML等)。例如,可以使用@RequestPart注解来接收文件和一个包含其他参数的对象,如下所示: ```java @PostMapping("/upload") public void uploadFile(@RequestPart("file") MultipartFile file, @RequestPart("data") DataObject data) { // 处理文件和数据 } ``` 在Postman中,可以使用form-data格式来发送请求,其中key为"file",value为文件,key为"data",value为JSON格式的数据。 而@RequestBody注解用于接收POST请求中的请求体内容,通常用于接收JSON数据或其他复杂的数据类型。例如,可以使用@RequestBody注解来接收一个包含JSON数据的对象,如下所示: ```java @PostMapping("/save") public void saveData(@RequestBody DataObject data) { // 处理数据 } ``` 在Postman中,可以使用raw格式来发送请求,选择JSON格式,并在请求体中输入JSON数据。 总结起来,@RequestPart注解适用于multipart/form-data请求,可以接收文件和其他复杂的请求域数据,而@RequestBody注解适用于接收POST请求中的请求体内容,通常用于接收JSON数据或其他复杂的数据类型。在Postman中,可以根据需要选择合适的格式来发送请求,并在请求中传递相应的参数。 #### 引用[.reference_title] - *1* *2* *3* [@RequestBody、@RequestParam 、@PathVariable、@RequestPart](https://blog.csdn.net/qq_35341203/article/details/108877579)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值