【已解决】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) 进行 修饰使用,否则会报资源类型和其他的一些问题。

相关文章
|
21天前
|
存储 前端开发 Java
如何使用 Spring 上传文件:全面指南
如何使用 Spring 上传文件:全面指南
44 1
|
2月前
|
JSON Java 数据格式
【微服务】SpringCloud之Feign远程调用
本文介绍了使用Feign作为HTTP客户端替代RestTemplate进行远程调用的优势及具体使用方法。Feign通过声明式接口简化了HTTP请求的发送,提高了代码的可读性和维护性。文章详细描述了Feign的搭建步骤,包括引入依赖、添加注解、编写FeignClient接口和调用代码,并提供了自定义配置的示例,如修改日志级别等。
124 1
|
3月前
|
负载均衡 Java Nacos
SpringCloud基础2——Nacos配置、Feign、Gateway
nacos配置管理、Feign远程调用、Gateway服务网关
SpringCloud基础2——Nacos配置、Feign、Gateway
|
3月前
|
前端开发 API 微服务
SpringCloud微服务之间使用Feign调用不通情况举例
SpringCloud微服务之间使用Feign调用不通情况举例
660 2
|
2月前
|
安全 算法 Java
强大!基于Spring Boot 3.3 六种策略识别上传文件类型
【10月更文挑战第1天】在Web开发中,文件上传是一个常见的功能需求。然而,如何确保上传的文件类型符合预期,防止恶意文件入侵,是开发者必须面对的挑战。本文将围绕“基于Spring Boot 3.3 六种策略识别上传文件类型”这一主题,分享一些工作学习中的技术干货,帮助大家提升文件上传的安全性和效率。
76 0
|
4月前
|
Java Spring
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
|
4月前
|
Java 开发工具 Spring
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
|
2月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
223 2
|
3天前
|
NoSQL Java Redis
Spring Boot 自动配置机制:从原理到自定义
Spring Boot 的自动配置机制通过 `spring.factories` 文件和 `@EnableAutoConfiguration` 注解,根据类路径中的依赖和条件注解自动配置所需的 Bean,大大简化了开发过程。本文深入探讨了自动配置的原理、条件化配置、自定义自动配置以及实际应用案例,帮助开发者更好地理解和利用这一强大特性。
37 14
|
25天前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
42 1
SpringBoot入门(7)- 配置热部署devtools工具