• SpringCloud和SpringBoot在调Feign传文件时的异常汇总及解决办法


    主要记录SpringCloud在调Feign传文件时的问题:

    1.(按注意点2改正即可)

    Current request is not a multipart request(按注意点2改正即可)

    2.(按注意点3处理即可)

     The field files exceeds its maximum permitted size of 1048576 bytes.(按注意点3处理即可)

    注意点1:

    如果你的A服务(调用端)和B服务(被调用端)不在一个服务器上(分布式服务),请不要使用以下方式(不要直接将java.io.file作为参数传递);否则会发现file只有文件名,path等属性,但实际大小为0kb(原理:是以path作为file根传递的,如果不是一个服务器,就会有坑,如果在一个服务器上理论上是没问题的,由于我的项目是分布式,所以这里我这里没尝试)

    1. @PostMapping(value="/upload_feign")
    2. public AjaxResult upload_feign(@RequestParam(value = "file") File file) ;

    注意点2:报Current request is not a multipart request

    分布式使用Feign传文件时正确姿势:

    2.1被调用端feigh:

    1. @PostMapping(value="/_upload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    2. public AjaxResult upload(@RequestPart(value = "file") MultipartFile file) ;

    2.2被调用端feigh的指向(被调用端业务代码):

    1. @PostMapping(value="/_upload_",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    2. public AjaxResult _upload_(@RequestPart(value = "file") MultipartFile file, ) throws Exception {
    3. //具体业务************
    4. return "";
    5. }

    2.3调用端

     remoteService._upload_(multipartFile);

    注意点3:如果以上改正完毕报错: The field files exceeds its maximum permitted size of 1048576 bytes

    3.1启动类新增以下内部类:

    1. public class Application {
    2. public static void main(String[] args) {
    3. SpringApplication.run(WmsApplication.class, args);
    4. }
    5. @Bean
    6. public MultipartConfigElement multipartConfigElement() {
    7. MultipartConfigFactory factory = new MultipartConfigFactory();
    8. //允许上传的文件最大值
    9. factory.setMaxFileSize( DataSize.parse("102400KB")); //KB,MB
    10. /// 设置总上传数据总大小
    11. factory.setMaxRequestSize(DataSize.parse("102400KB"));
    12. return factory.createMultipartConfig();
    13. }

    3.2配置application.yml新增以下节点:

    1. spring:
    2. servlet:
    3. multipart:
    4. max-file-size: 100MB
    5. max-request-size: 100MB

    然后调用结果成功如下:

     以上我已亲测,记录不易转载请注明出处。

  • 相关阅读:
    HTML5期末大作业:游戏网站设计与实现——基于bootstrap响应式游戏资讯网站制作HTML+CSS+JavaScript
    磁盘分区以及MBR与GPT
    C++面试八股文:static和const的关键字有哪些用法?
    YOLOv5 分类模型 Top 1和Top 5 指标实现
    ChatGPT集锦
    基于ssm+mysql+jsp作业管理(在线学习)系统
    远程实时监控管理:5G物联网技术助力配电站管理
    Linux--I/O复用之select
    数商云S2B2C商城积分商城功能如何实现家用电器企业营销价值最大化?
    北京陪诊小程序|陪诊系统开发|陪诊小程序未来发展不可小觑
  • 原文地址:https://blog.csdn.net/gaoduicai/article/details/127907891