【已解决】Spring Cloud Feign 上传文件,提示:the request was rejected because no multipart boundary was found的问题

简介: 【已解决】Spring Cloud Feign 上传文件,提示:the request was rejected because no multipart boundary was found的问题

我在网上查了很多关于 Spring Cloud 文件上传的相关资料也花费了不少时间,根据他们提供的方案修改也没有得到解决,经过自己探讨与摸索,终于解决了我的问题,也与大家分享了下,如下:

一、项目结构

首先介绍一下项目结构,我们开发的项目结构比较简单

xxx-api工程:这个工程主要是对外提供接口.

service-xxx工程:这个工程承载核心业务处理服务

二、上代码

对于开发者来说,看代码比较实在,如下:

xxx-api工程下的文件上传相关代码:

1、xxx-api项目的 Controller类 至关重要的 @RequestPart 注解

@PostMapping(path = "/uploadImg")
public Result<String> uploadImg(@RequestPart("file") MultipartFile file, @RequestHeader String accessToken) {
    Resp result = authService.authUserByToken(accessToken);
    if (result.getCode() > -1) {
        String accountId = BeanUtil.beanToMap(result.getData()).get("account").toString();
        return filePoolService.uploadImg(file, accountId);
    } else {
        return Result.fail("获取用户信息失败,请重新尝试");
    }
}

2、FeginClient类 注意标注 @PostMapping(path = "/api/file/uploadImg",consumes = MediaType.MULTIPART_FORM_DATA_VALUE) 和 @RequestPart 注解

/**

 * @param file      文件
 * @param accountId 用户唯一ID
 * @return 结果说明
 */
@PostMapping(path = "/api/file/uploadImg",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
Result<String> uploadImg(@RequestPart("file") MultipartFile file, @RequestParam String accountId);

二、service-xxx 工程,如下: 至关重要的 @RequestPart 注解

@PostMapping(path = "/uploadImg")
public Result<String> uploadImg(@RequestPart("file") MultipartFile file,@RequestParam String accountId) throws Exception {
    if (file.isEmpty()) {
        return Result.fail("没有要上传的文件");
    }
    BufferedImage image = ImageIO.read(file.getInputStream());
    if (image == null) {
        return Result.fail("文件错误");
    }
    byte[] imageInByte = ImgDealUtils.compress(image);
    String name = "";
    String fileName = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf('.'));
    if (fileName != null && !fileName.equals("")) {
        name = fileName;
    }
    return Result.success(this.filePoolService.saveFile(name + ".jpg", accountId, imageInByte));
}

总结一下:

对于文件类微服务的调用,要用 @RequestPart 注解标注,在合适位置配合注解 @PostMapping(path = "/api/file/uploadImg",consumes =MediaType.MULTIPART_FORM_DATA_VALUE) 进行 修饰使用,否则会报资源类型和其他的一些问题。

相关文章
|
负载均衡 前端开发 Java
SpringCloud调用组件Feign
本文深入探讨微服务Spring体系中的Feign组件。Feign是一个声明式Web服务客户端,支持注解、编码器/解码器,与Spring MVC注解兼容,并集成Eureka、负载均衡等功能。文章详细介绍了SpringCloud整合Feign的步骤,包括依赖引入、客户端启用、接口创建及调用示例。同时,还涵盖了Feign的核心配置,如超时设置、拦截器实现(Basic认证与自定义)和日志级别调整。最后,总结了`@FeignClient`常用属性,帮助开发者更好地理解和使用Feign进行微服务间通信。
1201 1
|
负载均衡 Java Nacos
SpringCloud基础2——Nacos配置、Feign、Gateway
nacos配置管理、Feign远程调用、Gateway服务网关
SpringCloud基础2——Nacos配置、Feign、Gateway
|
存储 前端开发 Java
如何使用 Spring 上传文件:全面指南
如何使用 Spring 上传文件:全面指南
1714 1
|
JSON Java 数据格式
【微服务】SpringCloud之Feign远程调用
本文介绍了使用Feign作为HTTP客户端替代RestTemplate进行远程调用的优势及具体使用方法。Feign通过声明式接口简化了HTTP请求的发送,提高了代码的可读性和维护性。文章详细描述了Feign的搭建步骤,包括引入依赖、添加注解、编写FeignClient接口和调用代码,并提供了自定义配置的示例,如修改日志级别等。
1175 1
|
前端开发 API 微服务
SpringCloud微服务之间使用Feign调用不通情况举例
SpringCloud微服务之间使用Feign调用不通情况举例
2713 2
|
安全 算法 Java
强大!基于Spring Boot 3.3 六种策略识别上传文件类型
【10月更文挑战第1天】在Web开发中,文件上传是一个常见的功能需求。然而,如何确保上传的文件类型符合预期,防止恶意文件入侵,是开发者必须面对的挑战。本文将围绕“基于Spring Boot 3.3 六种策略识别上传文件类型”这一主题,分享一些工作学习中的技术干货,帮助大家提升文件上传的安全性和效率。
1020 0
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
1464 0
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
1398 0
|
前端开发 Java 数据库
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——Thymeleaf 介绍
本课介绍Spring Boot集成Thymeleaf模板引擎。Thymeleaf是一款现代服务器端Java模板引擎,支持Web和独立环境,可实现自然模板开发,便于团队协作。与传统JSP不同,Thymeleaf模板可以直接在浏览器中打开,方便前端人员查看静态原型。通过在HTML标签中添加扩展属性(如`th:text`),Thymeleaf能够在服务运行时动态替换内容,展示数据库中的数据,同时兼容静态页面展示,为开发带来灵活性和便利性。
603 0
|
10月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
661 4

热门文章

最新文章