资讯专栏INFORMATION COLUMN

spring cloud 微服务之间上传文件

KitorinZero / 3406人阅读

摘要:今天开发项目时,遇到一个需求,需要上传一个文件到微服务上,微服务是国外同事写的,我负责处理和前端部分。问题就出在调用另一个微服务上。支持的请求方法的方式,属于的类。这个请求是通过协议传输的。

今天开发项目时,遇到一个需求,需要上传一个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)。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75284.html

相关文章

  • SpringCloud(第 024 篇)简单文件上传服务加入zuul服务后用zuul服务地址实

    摘要:提供给文件上传微服务用的。注意注解能注册到服务上,是因为该注解包含了客户端的注解,该是一个复合注解。地址可以查看该微服务网关代理了多少微服务的。 SpringCloud(第 024 篇)简单文件上传微服务,并加入 zuul 微服务后用 zuul 微服务地址采取curl或者页面点击实现文件上传 - 一、大致介绍 1、本章节主要将文件上传微服务加入到 zuul 服务中去,然后利用 zuul...

    Cympros 评论0 收藏0
  • SpringCloud(第 023 篇)简单文件上传服务采取curl或者页面点击实现文件上传

    摘要:二实现步骤添加引用包模块客户端发现模块监控和管理生产环境的模块添加应用配置文件,默认,默认打印日志添加简单的上传文件页面添加上传文件控制器上传文件控制器。添加文件服务启动类简单文件上传微服务采取或者页面点击实现文件上传。 SpringCloud(第 023 篇)简单文件上传微服务采取curl或者页面点击实现文件上传 - 一、大致介绍 1、本章节主要搭建了一个简单的页面上传Web控制器,...

    wangbinke 评论0 收藏0
  • Spring框架之我见(六)——Spring Cloud

    摘要:系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。传统架构升级困难。新的轻量级协议容器化的出现。熔断处理在微服务出现问题时防止出现雪崩效应。 聊完Spring Boot,我们来看看Spring Boot最重要的一方面的应用——Spring Cloud。 Spring Cloud 再聊SpringCloud之前我们先聊聊微服务。 ...

    alighters 评论0 收藏0
  • 两年了,我写了这些干货!

    摘要:开公众号差不多两年了,有不少原创教程,当原创越来越多时,大家搜索起来就很不方便,因此做了一个索引帮助大家快速找到需要的文章系列处理登录请求前后端分离一使用完美处理权限问题前后端分离二使用完美处理权限问题前后端分离三中密码加盐与中异常统一处理 开公众号差不多两年了,有不少原创教程,当原创越来越多时,大家搜索起来就很不方便,因此做了一个索引帮助大家快速找到需要的文章! Spring Boo...

    huayeluoliuhen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<