rest client 测试spring boot文件与其他属性上传

spring boot 文件上传与其他属性一起上传

DAO定义

需要用到lombok组件自动生成setter、getter方法

import lombok.Data;
import org.springframework.web.multipart.MultipartFile;

@Data
public class AgentInfoTest {

    private String agentName;

    private String agentPhone;

    private MultipartFile blFile;
}

controller上传文件代码:

@Api(value = "测试文件上传")
@Slf4j
@RestController
@RequestMapping("api/test")
public class TestController {

    @ApiOperation(value = "测试文件与其他属性一起上传")
    @PostMapping(value="test")
    public void test(AgentInfoTest condig) throws Exception{
        MultipartFile blFile = condig.getBlFile();
        if(!blFile.isEmpty()){
            File newFile = new File("D:\\" + blFile.getOriginalFilename());
            // 存储上传文件
            blFile.transferTo(newFile);
        }
    }
}

注意:这里定义的对象作为参数的时候不能标注@RequestBody,类似如下

public void test(@RequestBody AgentInfoTest condig) throws Exception

如果标记会出现如下异常

系统内部异常:Content type 'multipart/form-data;charset=UTF-8;boundary=WebAppBoundary' not supported"

application.yml配置

spring:
  # spring boot高版本: 2.X(低版本: 1.X 为spring.http.multipart)
  servlet:
    multipart:
      # 单个文件上传的大小限制(默认1M)
      max-file-size: 2MB
      # 请求上传文件接口总共上传文件大小的限制
      max-request-size: 20M

rest client 测试文件上传

代码如下:

###
POST {{baseurl}}/api/test
Accept: application/json
Content-Type: multipart/form-data; charset=UTF-8; boundary=WebAppBoundary
Authentication:{{Authentication}}


--WebAppBoundary
Content-Disposition: form-data; name="agentName"
Content-Type: application/json

张三

--WebAppBoundary
Content-Disposition: form-data; name="agentPhone"
Content-Type: application/json

lisi

--WebAppBoundary
Content-Disposition: form-data; name="blFile"; filename="%E5%BE%80_20201215142015.png"
Content-Type: application/octet-stream; charset=UTF-8

< D:\微信图片_20201215142015.png
--WebAppBoundary--

其中boundary=WebAppBoundary一定要写,WebAppBoundary可以自定义。
第一个--WebAppBoundary不要有参数信息(既前面是空)。
结尾用--WebAppBoundary-- 标识输入完成。
baseurlAuthentication 在配置文件中配置。

你可能感兴趣的:(rest client 测试spring boot文件与其他属性上传)