远程调用url传输文件,MultipartFile为null

踩坑
FeignClient 调用文件上传接口,接收端显示对应参数为null。
解决方案以及查找办法
原因: 其实发送端将文件发送过了,但是name的参数不是multipartFile,feign里的注解@RequestPart的value属性指定的参数名,并没有生效。在请求出打印request.getParts()可看到详细信息

    @RequestMapping(value = "/uploadMultipartFile", method = RequestMethod.POST, produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public String uploadMultipartFile(@RequestParam("file") MultipartFile[] file, HttpServletRequest request) {
        try {
            Collection<Part> parts = null;
            try {
                parts = request.getParts();
            } catch (ServletException e) {
                e.printStackTrace();
            }
            System.out.println(JSONObject.toJSONString(parts, true));
         
        } catch (IOException e) {
            throw new CommonExecption(ExceptionEnum.UPLOAD_FILE_ERROR);
        } catch (UpException e) {
            throw new CommonExecption(ExceptionEnum.UPLOAD_FILE_ERROR);
        }
    }
[
	{
		"contentType":"multipart/form-data; charset=ISO-8859-1",
		"headerNames":["content-disposition","content-type","content-transfer-encoding"],
		"inputStream":{
			"channel":{
				"open":true
			},
			"fD":{}
		},
		"name":"file", //这里文件名为file,而非multipartFile
		"size":15449,
		"submittedFileName":"3829155b-b413-482c-bb0c-5e7053988168.xlsx"
	}
]

解决方案

@PostMapping(value = "/uploadMultipartFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
    String uploadMultipartFile(@RequestPart(value="file") MultipartFile[] file);

fileClient.uploadMultipartFile(file)
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值