日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RPC 中 参数传递 ImputStream 流会关闭

發布時間:2024/9/27 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RPC 中 参数传递 ImputStream 流会关闭 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 非RPC,本地方法調用時:
  • RPC調用(涉及到注冊中心,Feign等方式)時:
  • RPC調用中,可將InputStream轉為byte[] 進行參數傳遞
  • InputStream 轉 byte []

實際工作中遇到很多需要對提交的附件處理的場景。那么就涉及到控制層和業務層之間的參數傳遞。

非RPC,本地方法調用時:

@PostMapping("/import")public void import(@RequestParam("file") MultipartFile file) throws IOException{return importService.import(file.getInputStream());} @Service public class ExcelImportServiceImpl implements ExcelImportService {public void import(InputStream inputStream) {//do something} }

這樣是完全可以的。

RPC調用(涉及到注冊中心,Feign等方式)時:

傳遞到消費者的流都是被關閉的,導致空指針等異常。

java.lang.NullPointerException: nullat com.alibaba.excel.ExcelReader.finish(ExcelReader.java:277) ~[easyexcel-2.1.6.jar!/:?]at com.alibaba.excel.ExcelReader.finalize(ExcelReader.java:287) [easyexcel-2.1.6.jar!/:?]at java.lang.System$2.invokeFinalize(System.java:1270) [?:1.8.0_191]at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:102) [?:1.8.0_191]at java.lang.ref.Finalizer.access$100(Finalizer.java:34) [?:1.8.0_191]at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:217) [?:1.8.0_191]

RPC調用中,可將InputStream轉為byte[] 進行參數傳遞

@PostMapping("/import")public void import(@RequestParam("file") MultipartFile file) throws IOException{return importService.import(file.getBytes());} @Service public class ExcelImportServiceImpl implements ExcelImportService {public void import(byte[] bytes) {ByteArrayInputStream inputStream= new ByteArrayInputStream(bytes);//do something} }

InputStream 轉 byte []

public static byte[] toByteArray(InputStream input) throws IOException {ByteArrayOutputStream output = new ByteArrayOutputStream();byte[] buffer = new byte[1024*4];int n = 0;while (-1 != (n = input.read(buffer))) {output.write(buffer, 0, n);}return output.toByteArray(); } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的RPC 中 参数传递 ImputStream 流会关闭的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。