MultipartFile 上传文件的踩坑点

现在的业务情况:

后台本身需要接收一个

@RequestBody PostExpress_I req 的对象
@Data
public class PostExpress_I {
    @NotNull(message = "产品标识不能为空")
    private Integer saleProductId;
    private String remark;
    private String memberId;
    private List<Integer> listProductId;
}

但现在需要在这个接口的基础上增加上传图片的功能

第一想法把接受图片的参数放在对象里,接受报错

content type‘multipart/form-data ...‘not support

这是因为请求过来的参数是content-type:multipart/form-data,是表单形式提交过来的,所以问题出现在形参上,去掉形参上的注解即可完成(只需要以springmvc的收参形式就OK了)

然后去掉了RequestBody,直接接受参数,但是接收不到listProductId这个集合报错

No primary or default constructor found for interface java.util.List

有时候我们前端会传一些 list 集合的参数,如果 list 集合的存储的类型是对象,通过 json 就可以封装,后端使用注解 @RequestBody 可以接收。如果是想传递通过装箱后的基本类型的 list ,需要使用到注解 @RequestParam。

后端没有使用 @RequestParam
 

最后接受参数形式修改为:

MultipartFile[] images,String memberId,String remark,@RequestParam("listProductId") List<Integer> listProductId

成功执行

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MultipartFile 是 Spring 框架中用于处理文件上传的接口。它可以用于接收客户端通过表单提交的文件数据,并提供一些方法来操作这些文件数据。 在使用 MultipartFile 上传文件时,你可以按照以下步骤进行操作: 1. 在后端的控制器方法中,使用 `@RequestParam` 注解将 MultipartFile 对象作为参数接收文件数据。示例代码如下: ```java @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) { // 处理文件上传逻辑 // ... return "success"; } ``` 2. 在前端的 HTML 表单中,使用 `enctype="multipart/form-data"` 属性来指定表单请求类型为文件上传类型,并使用 `<input type="file">` 元素来选择要上传的文件。示例代码如下: ```html <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="Upload"> </form> ``` 3. 在后端控制器方法中,你可以通过 MultipartFile 对象提供的方法来获取文件的信息,例如文件名、大小、内容等。示例代码如下: ```java @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) { String fileName = file.getOriginalFilename(); long fileSize = file.getSize(); // 执行文件上传逻辑 // ... return "success"; } ``` 4. 在处理文件上传的逻辑中,你可以使用 MultipartFile 对象提供的方法来保存文件,例如使用 `transferTo()` 方法将文件保存到指定的位置。示例代码如下: ```java @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) { if (!file.isEmpty()) { try { // 指定保存文件的路径 String filePath = "/path/to/save/file"; // 将文件保存到指定路径 file.transferTo(new File(filePath)); // 文件上传成功 return "success"; } catch (IOException e) { // 文件上传失败 return "error"; } } else { // 文件为空 return "empty"; } } ``` 以上就是使用 MultipartFile 进行文件上传的基本步骤和示例代码。希望能对你有所帮助!如果还有其他问题,请继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值