OpenFeign FormData

简介: OpenFeign FormData

服务端接口代码如下:

/**
 * 上传数据+实体信息
*/
@RequestMapping("/upload")
public String doctorAnalysis(HttpServletRequest request, @RequestParam(value = "userinfo") String param,  @RequestParam(value = "file") MultipartFile file) {
    logger.info("userinfo json => {}", param);
    logger.info("上传成功{}", file.getOriginalFilename());
    File saveFile = new File("D:\\"+file.getOriginalFilename());
    if (!saveFile.exists()) {
        saveFile.mkdirs();
    }
    try {
        file.transferTo(saveFile);
    } catch (IOException e) {
        logger.error(e.getMessage(), e);
        e.printStackTrace();
    }
    return "上传成功";
}

 

PostMan 如下

 

OpenFeign

@FeignClient(name = "vipsoft", url = "${api.url}")
public interface ICallbackFeignService {
    /**
     * 上传文件
     *
     * 注意: 使用openfeign传递参数含有文件类型时必须指定 consumes = MediaType.MULTIPART_FORM_DATA_VALUE
     * 
     * @param param  需要将对象转成JSON,如果直接传对象出去,将会变成 Key Value的形式
     * @return
     */
    @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    String upload(@RequestPart("result") String param, @RequestPart("file") MultipartFile file);
}
package com.vipsoft.web;
import com.vipsoft.web.rpc.ICallbackFeignService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileInputStream;
@SpringBootTest
public class AppCallbackTest {
    @Autowired
    ICallbackFeignService appCallbackFeignService;
    @Test
    void Upload() throws Exception {
        File file = new File("D:\\Users\\Desktop\\fanye.mp4");
        //这里的第一个参数值 file 是对应上面feign的文件注解中的@RequestPar中的name。一定要对应上
        MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "application/octet-stream;charset=utf-8", new FileInputStream(file));
        UserInfo param = new UserInfo();
        param.setUserName("张三"); 
        param.setAge(40); 
        appCallbackFeignService.upload(multipartFile);
    }
}

 

目录
相关文章
|
8月前
feign使用url参数传参@SpringQueryMap使用
feign使用url参数传参@SpringQueryMap使用
162 0
|
4月前
|
缓存 安全 Java
Spring Get请求 与post请求
本文详细介绍了Spring框架中GET请求和POST请求的区别及应用场景。GET请求用于从服务器获取资源,参数附在URL末尾,适合查看非敏感信息;POST请求用于向服务器提交数据,参数在请求体中传输,适合处理敏感信息。Spring通过`@GetMapping`和`@PostMapping`注解分别处理这两种请求。此外,文章还提供了示例代码,展示了如何在Spring中实现这两种请求的处理。最后,文章总结了推荐使用POST请求的原因,包括更高的安全性、更大的数据传输量、更好的幂等性及灵活性。
Spring Get请求 与post请求
|
6月前
|
XML JSON Java
通过 Feign 进行文件上传
通过 Feign 进行文件上传
241 7
|
8月前
|
Java API Spring
feign-reactive
feign-reactive
243 0
|
7月前
|
存储
多文件上传的实现-Spring24
多文件上传的实现-Spring24
|
8月前
|
前端开发 JavaScript 数据处理
ajax Fileupload多文件上传实现
【5月更文挑战第3天】使用jQuery和AjaxFileUpload.js,实现多文件上传的示例。HTML部分包括一个文件输入框和上传按钮。JavaScript部分在按钮点击时获取文件,创建FormData对象并遍历文件添加进去。然后通过Ajax以POST方式发送至'upload.php',设置禁用jQuery的数据处理和contentType自动设置。成功或失败后有相应回调处理服务器响应或错误。
80 5
|
8月前
satoken+webflux获取header以及body
satoken+webflux获取header以及body
131 0
|
前端开发 JavaScript
ajax Fileupload多文件上传实现案例
ajax Fileupload多文件上传实现案例
166 1
|
Java Spring
SpringMVC多文件上传
SpringMVC多文件上传
69 0
|
缓存 负载均衡 前端开发
SpringCloud之OpenFeign实现服务间请求头数据传递(OpenFeign拦截器RequestInterceptor的使用)
SpringCloud之OpenFeign实现服务间请求头数据传递(OpenFeign拦截器RequestInterceptor的使用)
3705 0
SpringCloud之OpenFeign实现服务间请求头数据传递(OpenFeign拦截器RequestInterceptor的使用)