• 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

    然后调用结果成功如下:

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

  • 相关阅读:
    iframe的src可以引入任何源,但是二者如果想通信的话,必须是同源,如果是非同源,如何解决?
    zabbix监控中间件服务
    PHP安全问题:远程溢出、DoS、safe_mode绕过漏洞
    计算机网络
    【前端框架的发展史详细介绍】
    【C语言】文件操作
    un7.29:Linux——如何在docker中安装tomcat?
    c语言:初识结构体
    Rime 如何通过 iCloud 实现词库多端同步,Windows、iOS、macOS
    Kafka入门05——基础知识
  • 原文地址:https://blog.csdn.net/gaoduicai/article/details/127907891