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

原文链接: https://www.jianshu.com/p/f1e5876a3fe2

 

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 messageConverters;

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

 

你可能感兴趣的:(spring boot 多文件上传,OpenFeign文件传输)