分散式檔案上傳(微服務)

weixin_43803823 發表於 2020-10-26

分散式檔案上傳(微服務)

專案場景:分散式檔案上傳(微服務)

服務A呼叫服務B的檔案上傳介面

問題描述:Current request is not a multipart request 當前請求不是多部分請求

服務B的檔案上傳功能單獨可以實現,當被服務A呼叫時服務B報錯Current request is not a multipart request ,莪當時很納悶,百思不得其解

原因分析:

原因就是spring在解析或者載入檔案的時候出錯,以至於服務B在上傳檔案時格式錯誤,無法識別,
檔案上傳的引數問題,不應該用@RequestParam,應該用@RequestPart

解決方案:

1.服務呼叫介面方:

1)加上檔案上傳的配置類

@FeignClient(value = "uploadFile-server", configuration = FeignMultipartSupportConfig.class)

2)介面寫法與檔案上傳引數

@RequestMapping(value = "uploadFile", method = RequestMethod.POST,consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
boolean uploadFileCurrency(@RequestPart("file") MultipartFile file);

2.目標服務
1)檔案上傳引數

public boolean uploadFile(@RequestPart("file") MultipartFile file)

配置類:

public class FeignMultipartSupportConfig {

@Autowired
private ObjectFactory<HttpMessageConverters> messageConverters;

@Bean
public Encoder multipartFormEncoder() {
    return new SpringFormEncoder(new SpringEncoder(messageConverters));
}
    @Bean
    public feign.Logger.Level multipartLoggerLevel() {
    return feign.Logger.Level.FULL;
}

}