spring boot 多文件上传,OpenFeign文件传输

本文介绍如何在SpringBoot中实现多文件与bean一起传输,并通过配置FastJsonHttpMessageConverter来优化消息转换。此外,还介绍了如何利用OpenFeign进行文件传输,包括使用feign-form插件和MultipartSupportConfig配置。

 

1、spring boot多文件传输与bean一起传输使用@RequestPart可以看一下  这位老哥的方法很优雅

(1)spring 部分代码是直接搬的

@PostMapping("upload")
public ImageInfo upload(@RequestPart("file") MultipartFile file,@RequestPart("file1") MultipartFile file1,@RequestPart("imageInfo") ImageInfo imageInfo) {
    System.out.println(imageInfo);
    return imageInfo;
}

 (2)添加config

import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;

@Configuration
public class Config {

	@Bean
    public HttpMessageConverters fastJsonHttpMessageConverters(){
        return new HttpMessageConverters(new FastJsonHttpMessageConverter());
    }
}

2、OpenFeign传输文件 

Feign默认不支持文件传输需要插件feign-form 在maven里面引一下(注意版本),主要有两种使用方法

一下是从官网搬运的,试过可用,可以直接去官网查看新的API文档  官网地址

(1)主动添加一个 @Headers("Content-Type: multipart/form-data")

interface SomeApi {

  // File parameter
  @RequestLine("POST /send_photo")
  @Headers("Content-Type: multipart/form-data")
  void sendPhoto (@Param("is_public") Boolean isPublic, @Param("photo") File photo);
}

(2)MultipartSupportConfig  此方法是从官网copy+改的,未测试

@FeignClient(
    name = "file-upload-service",
    configuration = FileUploadServiceClient.MultipartSupportConfig.class
)
public interface FileUploadServiceClient {

@PostMapping(value = "uploadImage", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
	bean createUpdateImage(@RequestPart("images") MultipartFile images, @RequestParam(value="id") String id);

  public class MultipartSupportConfig {

    @Autowired
    private ObjectFactory<HttpMessageConverters> messageConverters;

    @Bean
    public Encoder feignFormEncoder () {
      return new SpringFormEncoder(new SpringEncoder(messageConverters));
    }
  }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值