You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Feign调用上传MultipartFile时触发EncodeException及FileNotFoundException问题求助

Feign调用上传MultipartFile时触发EncodeException及FileNotFoundException问题求助

大家好,我现在碰到一个Feign跨服务上传文件的问题,想请各位帮忙看看:

我的场景是:在App A的Controller中通过MultipartFile接收前端上传的文件,接着通过Service层调用Feign Client,去请求App B的对应REST接口。但是在执行Feign调用strategyServiceRestClient.uploadRequest(file);的时候,触发了FileNotFoundException,提示MultipartFile资源无法解析为URL。

以下是我的代码实现:

Controller类

@RestController("strategy")
@Validated
public class StrategyController {
  private final StrategyService strategyService;

  public StrategyController(StrategyService strategyService) {
    this.strategyService = strategyService;
  }

  @RequestMapping(path = ASSORT_STRAT_UPLOAD_REQUEST, method = RequestMethod.POST)
  public ResponseEntity<String> upload(MultipartFile file) {
    return ResponseEntity.ok(strategyService.upload(file));
  }
}

Service类

@Service
public class StrategyServiceImpl implements StrategyService {
  private final strategyServiceRestClient strategyServiceRestClient;

  public StrategyServiceImpl(strategyServiceRestClient strategyServiceRestClient) {
    this.strategyServiceRestClient = strategyServiceRestClient;
  }

  @Override
  public String upload(MultipartFile file) {
    return strategyServiceRestClient.uploadRequest(file);
  }
}

Feign Client接口

@FeignClient(value = "strategy", url = "${strategy-service-url}", configuration = StrategyServiceFeignConfig.class)
public interface StrategyServiceRestClient {
  @RequestMapping(method = RequestMethod.POST, value = KimsBffConstants.ASSORT_STRAT_UPLOAD_REQUEST)
  @HandleFeignException(HandleFeignClientException.class)
  String uploadRequest(@RequestPart MultipartFile file);
}

触发的异常栈信息

Caused by:
java.io.FileNotFoundException: MultipartFile resource [file] cannot be resolved to URL 
    at org.springframework.core.io.AbstractResource.getURL(AbstractResource.java:113)
    at org.springframework.core.io.AbstractResource.getURI(AbstractResource.java:123)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:569)
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:689)
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:774)
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:774)
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)
    at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:869)
    at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:760)
    at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
    at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:400)
    at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1514)
    at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:1007)
    at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:456)
    at org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:104)
    at org.springframework.cloud.openfeign.support.SpringEncoder.checkAndWrite(SpringEncoder.java:217)
    at org.springframework.cloud.openfeign.support.SpringEncoder.encodeWithMessageConverter(SpringEncoder.java:146)

Postman请求/响应截图

Postman请求/响应截图

备注:内容来源于stack exchange,提问作者gcpdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 17:29:35