Feign上传文件
时间:2022-05-06
本文章向大家介绍Feign上传文件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
今天给大家介绍下在Feign中如何调用文件上传接口,进行文件上传操作。
这边文章讲的Feign不是Spring Cloud Feign,是原始Feign的使用。
在一些比较老的,不是Spring Cloud的项目中,我们也可以用Feign来进行接口的调用。
关于Feign的使用可以参考我的这篇文章:如何优雅的使用Feign调用接口
使用Feign来上传文件,首先你得有一个上传文件的接口,我们假设上传地址如下:
POST http://localhost:8080/file/upload
参数的话就一个file,一个二进制文件。
在项目中增加Feign的依赖,除了核心模块还有jackson,最重要的就是form模块的依赖,否则无法上传文件。
<dependency>
<groupId>com.netflix.feign</groupId>
<artifactId>feign-core</artifactId>
<version>8.18.0</version>
</dependency>
<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>com.netflix.feign</groupId>
<artifactId>feign-jackson</artifactId>
<version>8.18.0</version>
</dependency>
定义一个上传的接口:
public interface FileUploadApi {
@RequestLine("POST /file/upload")
@Headers("Content-Type: multipart/form-data")
Response uploadFile(@Param("file") File file);
}
@Param("file")byte[] file 也可以
编写上传逻辑:
public class UploadService {
private static final String HTTP_FILE_UPLOAD_URL = "http://localhost:8080/file/upload";
public boolean uploadFile(File file) {
FileUploadApi fileUploadApi = Feign.builder()
.encoder(new FormEncoder(new JacksonEncoder()))
.target(FileUploadApi .class, HTTP_FILE_UPLOAD_URL);
Response response = fileUploadApi .uploadFile(file);
return response.status() == 200;
}
}
测试代码:
@Test
public void testUploadFile() {
UploadService uploadService = new UploadService();
File file = new File("E:\yinjihuan.txt");
assertTrue(uploadService.uploadFile(file));
}
- Flash/Flex学习笔记(47):反向运动学(上)
- 汉诺塔问题算法介绍
- Flash/Flex学习笔记(36):自己动手实现一个滑块控件(JimmySilder)
- 使用Zabbix服务端本地邮箱账号发送报警邮件及指定报警邮件操作记录
- fckeditor上传问题的解决
- Flash/Flex学习笔记(46):正向运动学
- 异步Socket处理的一些测试值
- .Net中DES加密的细节问题
- 分布式监控系统Zabbix--完整安装记录 -添加web页面监控
- .Net中使用带UI的OCX的方法
- 2017数据科学领域15大热门GitHub项目
- 简单分页的性能优化
- Flash/Flex学习笔记(42):坐标旋转
- 分布式监控系统Zabbix-完整安装记录 -添加端口监控
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- IP摄像头RTSP协议视频平台EasyNVR录像列表没有按照开始时间倒序排序的问题修复
- leetcode哈希表之两数之和
- Linux系统下Tomcat8启动速度很慢的解决方法
- Linux下查看binlog文件创建时间的命令
- Linux下修改文件权限(所有权)
- Sticks(UVA - 307)【DFS+剪枝】
- Linux CentOS服务器搭建与初始化配置教程
- Centos6.9安装vsftpd并配置多用户的方法
- linux c下log输出代码模板示例代码
- linux adsl 拨号自动配置脚本的方法
- Python调用ip代理案例,快代理api调用demo
- centos7(redhat7)如何卸载自带yum并且安装国内yum源的方法
- linux用户组以及权限总结
- Linux Crontab Shell脚本实现秒级定时任务的方法
- Linux配置SSH和Xshell连接服务器的教程(图解)