继上一篇文章讲了springboot上传文件的各种基本操作,但我们在实际的开发中可能会单独的开发一个文件服务来管理我们的真实的文件,然后将我们的文件信息和业务的数据存放在一起。那么在微服务中如何使用openfeign上传文件呢?
首先需要搭建一套微服务环境,网关、文件服务、业务服务、服务注册中心,这里我就不讲怎么搭建了。以下是一个简单的示例:
- 引入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>
- 文件服务的上传接口
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();
}
}
- 提供文件上传接口的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);
}
- 开启openfeign
java
@EnableFeignClients(basePackageClasses = FileService.class)
@EnableDiscoveryClient
@SpringBootApplication
public class DataApplication {
public static void main(String[] args) {
SpringApplication.run(DataApplication.class, args);
}
}
- 使用
java
@Resource
@Lazy
private FileService fileService;
@Override
public void upload(UploadFileParam param) {
fileService.upload(param.getFile);
}