首页 > 解决方案 > swgger ui object参数中的MultipartFile类型无法识别

问题描述

控制器使用对象接收

  @ApiOperation(value = "提交打包信息")
    @RequestMapping(value = "submit",method = RequestMethod.POST)
    public AppPackSubmitAns submit(@Validated AppPackSubmitReq req, HttpServletRequest request){


        return  packService.submit(req,request);
    }

这是接收参数对象

package com.xjm.api.common.req.app;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiParam;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.util.Date;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: xjm
 * @Date: 2021/09/18/14:01
 * @Description:
 */

@Setter
@Getter
@ToString
public class AppPackSubmitReq {

    /**
     *
     */
    @NotBlank(message = "名称不能为空")
    @ApiParam(value = "app名称",required = true,example = "百度")
    private String appName;

    /**
     *
     */
    @NotBlank(message = "网址不能为空")
    @ApiParam(value = "app网址",required = true,example = "http://www.baidu.com")
    private String url;

    /**
     *
     */
    @NotBlank(message = "版本不能为空")
    @ApiParam(value = "app版本需遵循规范否则打包失败",required = true,example = "1.0.0")
    private String version;

    /**
     * 包名
     */
    @NotBlank(message = "包名不能为空")
    @ApiParam(value = "app包名需遵循规范否则打包失败一般为域名倒叙",required = true,example = "com.baidu.test")
    private String packName;

    /**
     * 倒计时
     */
    @NotNull(message = "倒计时不能为空")
    @ApiParam(value = "app倒计时/秒",required = true,example = "0")
    private Integer countDown;

    /**
     * 倒计时显示  0关 1开
     */
    @NotNull(message = "倒计时显示  0关 1开")
    @Range(min = 0,max = 1,message = "倒计时显示  0关 1开")
    @ApiParam(value = "倒计时按钮显示  0关 1开",required = true,example = "0")
    private Integer countDownShow;

    /**
     * 类型 ios | android
     */
    @NotBlank(message = "类型不能为空")
    @ApiParam(value = "类型 ios | android",required = true,example = "android")
    private String type;

    @ApiParam(value = "app图标 必须png",required = true)
    private MultipartFile icon;

    @ApiParam(value = "app启动图 必须png")
    private MultipartFile startImg;

}

但是 SWgger UI 将 MultipartFile 类型的字段识别为 Queries,应该是 formDate,
在此处输入图像描述

我将图标添加到控制器方法以正确识别


    @ApiOperation(value = "提交打包信息")
    @RequestMapping(value = "submit",method = RequestMethod.POST)
    public AppPackSubmitAns submit(@Validated AppPackSubmitReq req,@ApiParam MultipartFile icon1, HttpServletRequest request){


        return  packService.submit(req,request);
    }

在此处输入图像描述

有谁知道如何解决我不想向方法添加参数的问题

标签: javaspring

解决方案


推荐阅读