import feign.codec.Encoder;
import feign.form.spring.SpringFormEncoder;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.support.SpringEncoder;
@FeignClient(name="testName",configuration = TestFeign.MultipartSupportConfig.class)
@Component
public interface TestFeign {
class MultipartSupportConfig {
private ObjectFactory<HttpMessageConverters> messageConverters;
public Encoder feignFormEncoder() {
return new SpringFormEncoder(new SpringEncoder(messageConverters));
}
}
@PostMapping(value = "/file/add",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
ResponseDTO add(@RequestParam(value = "fileName") String fileName,
@RequestPart(value = "file") MultipartFile file);
@PutMapping(value = "/file/edit",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
ResponseDTO edit(@RequestParam(value = "id") String id,
@RequestParam(value = "fileName") String fileName,
@RequestPart(value = "file",required = false) MultipartFile file);
}
<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form-spring</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>