当前位置: 首页 > article >正文

微服务中如何使用openfeign上传文件

继上一篇文章讲了springboot上传文件的各种基本操作,但我们在实际的开发中可能会单独的开发一个文件服务来管理我们的真实的文件,然后将我们的文件信息和业务的数据存放在一起。那么在微服务中如何使用openfeign上传文件呢?

首先需要搭建一套微服务环境,网关、文件服务、业务服务、服务注册中心,这里我就不讲怎么搭建了。以下是一个简单的示例:

1. 引入openfeign的依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

2. 文件服务的上传接口

// 单文件上传
    @PostMapping("/upload", headers = {"content-type=multipart/form-data"})
    public String uploadFile(@RequestParam("file") MultipartFile file) {
        if (file.isEmpty()) {
            return "文件为空";
        }
        try {
            // 保存到本地
            Path path = Paths.get("uploads/" + file.getOriginalFilename());
            Files.createDirectories(path.getParent()); // 创建目录
            Files.write(path, file.getBytes());
            return "上传成功: " + file.getOriginalFilename();
        } catch (IOException e) {
            return "上传失败: " + e.getMessage();
        }
    }

3. 提供文件上传接口的openfeign接口

@FeignClient(name = "fileservice_name", path = "/file")
public interface FileService {


    @PostMapping(value = "/upload", headers = {"content-type=multipart/form-data"})
    String uploadFile(@RequestParam("file") MultipartFile file);
}

4. 开启openfeign

@EnableFeignClients(basePackageClasses = FileService.class)
@EnableDiscoveryClient
@SpringBootApplication
public class DataApplication {

    public static void main(String[] args) {
        SpringApplication.run(DataApplication.class, args);
    }

}

5. 使用 

    @Resource
    @Lazy
    private FileService fileService;

    @Override
    public void upload(UploadFileParam param) {
        fileService.upload(param.getFile);
    }


http://www.kler.cn/a/542793.html

相关文章:

  • 一个基于ESP32S3和INMP441麦克风实现音频强度控制RGB灯带律动的代码及效果展示
  • 华为openEuler部署docker
  • 2025.2.10 每日学习记录3:技术报告只差相关工作+补实验
  • 【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA
  • pgsql最快的数据导入BeginBinaryImport
  • STM32 HAL库 ADC程序(C语言)
  • 【Oracle专栏】本地 expdp 导出远程库
  • 免费申请 | FRDM-MCXA156评测活动发布!
  • 01-SDRAM控制器的设计——案例总概述
  • 游戏引擎学习第96天
  • 游戏本电脑为什么打开游戏开始玩不卡,过段时间玩却非常卡(比如黑神话悟空)
  • [开源]MaxKb+Ollama 构建RAG私有化知识库
  • .vscode文件夹详解
  • 安装OpenJDK21(linux、macos)
  • Response 和 Request 介绍
  • 7、Python面试题解析:== 与 is,id函数详解
  • C34.【C++ Cont】STL库的双端队列
  • 基于 openEuler 构建 LVS-DR 群集
  • 【ESP32】ESP-IDF开发 | WiFi开发 | HTTP服务器
  • Python基于 Flask 创建简单Web服务并接收文件
  • 头条百度批量采集软件说明文档
  • 2021版小程序开发5——小程序项目开发实践(2)-完
  • Harmony OS和Android 区别
  • 实现限制同一个账号最多只能在3个客户端(有电脑、手机等)登录(附关键源码)
  • C/C++混合读入cin与scanf问题
  • Go1.24 strings包增加的新方法