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

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

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

  1. 引入openfeign的依赖
XML 复制代码
        <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>
  1. 文件服务的上传接口
java 复制代码
// 单文件上传
    @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();
        }
    }
  1. 提供文件上传接口的openfeign接口
java 复制代码
@FeignClient(name = "fileservice_name", path = "/file")
public interface FileService {


    @PostMapping(value = "/upload", headers = {"content-type=multipart/form-data"})
    String uploadFile(@RequestParam("file") MultipartFile file);
}
  1. 开启openfeign
java 复制代码
@EnableFeignClients(basePackageClasses = FileService.class)
@EnableDiscoveryClient
@SpringBootApplication
public class DataApplication {

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

}
  1. 使用
java 复制代码
    @Resource
    @Lazy
    private FileService fileService;

    @Override
    public void upload(UploadFileParam param) {
        fileService.upload(param.getFile);
    }
相关推荐
木风小助理2 分钟前
Kotlin内联函数及其关联关键字的深度解析
android·java·开发语言
刘一说6 分钟前
Java语言多态特性在Spring Boot中的体现:从原理到实战
java·开发语言·spring boot
郑州光合科技余经理11 分钟前
同城O2O系统架构解析:中台化如何赋能本地生活服务
java·开发语言·javascript·人工智能·系统架构·php·生活
qq_124987075312 分钟前
基于微信小程序的垃圾分类信息系统(源码+论文+部署+安装)
java·前端·spring boot·后端·微信小程序·小程序·计算机毕业设计
带刺的坐椅14 分钟前
带来 Multi Agent 开发,OpenSolon v3.8.3 发布
java·ai·agent·solon·mcp
期待のcode14 分钟前
垃圾回收的停顿
java·开发语言·jvm
qq_124987075317 分钟前
基于微信小程序的照片社交平台(源码+论文+部署+安装)
java·大数据·微信小程序·小程序·毕业设计·计算机毕业设计
JasmineWr19 分钟前
Spring项目启动初始化方案
开发语言·spring
郑州光合科技余经理22 分钟前
中台架构实战:同城O2O系统二次开发与部署指南
java·大数据·开发语言·前端·后端·架构·php
安卓理事人24 分钟前
鸿蒙中加密库使用
android·java·开发语言