之前有个传输Excel的接口,传到dubbo层内容变空。
第一种方法:
dubbo跨系统传递流,会使得流为空,最简单有效的方法是将流转变为byte数组,然后再将byte数组转化为流,即用byte为中介传递。
controller
uploadFile.getBytes()
service
InputStream inputStream = new ByteArrayInputStream(file);
MultipartFile uploadFile = new MockMultipartFile(ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);
第二种方法:
第二种解决方法,使用Hessian协议,进行如下修改
修改之前
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.PicUploadService" ref="picUploadServiceImpl"/>
修改之后
<dubbo:protocol name="hessian" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service protocol="hessian" interface="com.PicUploadService" ref="picUploadServiceImpl"/>