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

相关文章
|
1月前
|
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.
|
1月前
|
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
|
3月前
|
Java 应用服务中间件 微服务
spring boot 中Feign调用提示Request header is too large 解决方案
spring boot 中Feign调用提示Request header is too large 解决方案
146 1
|
3月前
|
Java API Spring
Spring Boot中使用Feign进行HTTP请求
Spring Boot中使用Feign进行HTTP请求
|
3月前
|
IDE Java Maven
Spring Boot启动失败问题:hile scanning for the next token found character '@'
Spring Boot启动失败问题:hile scanning for the next token found character '@'
123 0
|
4月前
|
JSON Java Apache
Spring Cloud Feign 使用Apache的HTTP Client替换Feign原生httpclient
Spring Cloud Feign 使用Apache的HTTP Client替换Feign原生httpclient
219 0
|
1月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
|
2天前
|
SpringCloudAlibaba API 开发者
新版-SpringCloud+SpringCloud Alibaba
新版-SpringCloud+SpringCloud Alibaba
|
30天前
|
人工智能 前端开发 Java
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)
本文介绍了如何使用 **Spring Cloud Alibaba AI** 构建基于 Spring Boot 和 uni-app 的聊天机器人应用。主要内容包括:Spring Cloud Alibaba AI 的概念与功能,使用前的准备工作(如 JDK 17+、Spring Boot 3.0+ 及通义 API-KEY),详细实操步骤(涵盖前后端开发工具、组件选择、功能分析及关键代码示例)。最终展示了如何成功实现具备基本聊天功能的 AI 应用,帮助读者快速搭建智能聊天系统并探索更多高级功能。
460 2
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)
|
1月前
|
Java 微服务 Spring
SpringBoot+Vue+Spring Cloud Alibaba 实现大型电商系统【分布式微服务实现】
文章介绍了如何利用Spring Cloud Alibaba快速构建大型电商系统的分布式微服务,包括服务限流降级等主要功能的实现,并通过注解和配置简化了Spring Cloud应用的接入和搭建过程。
SpringBoot+Vue+Spring Cloud Alibaba 实现大型电商系统【分布式微服务实现】