Dubbo调用之MultipartFile无法序列化问题

场景:

有两个服务:oss文件存储服务和biz业务服务,此时要实现上传文件的需求,biz服务要调用oss服务的upload文件上传方法,如果直接以MultipartFile类型传输,会报错:

Caused by: java.lang.IllegalStateException: Serialized class org.springframework.web.multipart.support.StandardMultipartHttpServletRequest must implement
java.io.Serializable

原因:

Dubbo调用传输的必须是序列化(implements Serializable)的,MultipartFile类型无法序列化,所以报错。

解决方案:

将MultipartFile类型参数改为字节数组的形式。

biz业务服务负责将MultipartFile类型转换为字节数组:

byte[] fileBytes = null;
        try {
            fileBytes = file.getBytes();
        } catch (IOException e) {
            log.error("获取文件流异常:{}", e);
        }

oss服务的upload方法文件参数改为字节数组接收:

Dubbo调用之MultipartFile无法序列化问题_第1张图片

你可能感兴趣的:(异常处理,rpc,接口,中间件)