阿八博客
  • 100000+

    文章

  • 23

    评论

  • 20

    友链

  • 最近新加了很多技术文章,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

spring cloud 微服务之间上传文件的+[微服务+文件上传]

欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/jsh/2019/0712/7827.html 1190000019732437
今天开发项目时,遇到一个需求,需要上传一个excel文件到微服务上,微服务是国外同事写的,
我负责处理gateway和前端部分。在postman上测试接口没有问题了,就准备在代码就实现。
但是遇到了一个问题,无论怎样都调用不成功。此时前端到gateway的调用是成功的,因为我可以把controller
拿到的数据成功写入到本地。问题就出在gateway调用另一个微服务上。
@RequestMapping(value = "/import/excel", method = RequestMethod.POST)
    public Object importTableExcel(@RequestParam("file") MultipartFile file, @RequestParam("tableName") String tableName, @RequestParam("importType") String importType) {
        return ep2LookUpDBFeignClient.importTableExcel(file, tableName, importType);
    }
这个是controller代码,前端用formData封装提交,这里用MultipartFile 接收。到这一步是没有问题的
@RequestMapping(value = "/api/tables/import/excel",
        method = RequestMethod.POST,
        produces = { MediaType.APPLICATION_JSON_UTF8_VALUE },
        consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    Object importTableExcel(@RequestParam("file") MultipartFile file,@RequestParam("tableName")String tableName, @RequestParam("importType")String importType);
这个是调用微服务的代码,问题就出在这里。但是我一开始也是百思不得其解,参数设置什么的都没
有问题了,那怎么还会出错了。于是我各种找资料,然后在一篇文中,看到原来是注解写错了,
MultipartFile 的注解应该是@RequestPart,而不是@RequestParam。改了之后果然可以了。
@RequestMapping(value = "/api/tables/import/excel",
        method = RequestMethod.POST,
        produces = { MediaType.APPLICATION_JSON_UTF8_VALUE },
        consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    Object importTableExcel(@RequestPart("file") MultipartFile file,@RequestParam("tableName")String tableName, @RequestParam("importType")String importType);
这个是可以成功运行的代码,在此记录一下,以免下次还犯同样的错误。

以下是 @RequestParam和@RequestPart的区别

1.@RequestPart这个注解用在multipart/form-data表单提交请求的方法上。 
2.支持的请求方法的方式MultipartFile,属于Spring的MultipartResolver类。这个请求是通过                http协议传输的。 
3.@RequestParam也同样支持multipart/form-data请求。 
4.他们最大的不同是,当请求方法的请求参数类型不再是String类型的时候。 
5.@RequestParam适用于name-valueString类型的请求域,@RequestPart适用于复杂的请求域(像JSON,XML)。

相关文章

暂住......别动,不想说点什么吗?
  • 全部评论(0
    还没有评论,快来抢沙发吧!