[英]Get an Publisher<ByteBuffer> from InputStream
我剛剛升級了我的 mongo-db-java-driver,現在方便的函數GridFSBucket.uploadFromStream
已經消失了。 因此我們現在得到了一個
GridFSUploadPublisher<ObjectId> uploadFromPublisher(String filename, Publisher<ByteBuffer> source);
任何想法如何將我的 InputStream 轉換為Publisher<ByteBuffer>
? java驅動程序或Reactor中是否有任何實用程序?
spring 框架中有一個實用程序可以將輸入流轉換為數據緩沖區通量。 並且直接將數據緩沖區映射為字節緩沖區。
Flux<ByteBuffer> byteBufferFlux = DataBufferUtils.readByteChannel(() -> Channels.newChannel(inputStream), DefaultDataBufferFactory.sharedInstance, 4096).map(DataBuffer::asByteBuffer);
為了讓它工作,可以讀取流並將數據存儲在byte[]
數組中,稍后可以用ByteBuffer.wrap(byte[])
方法包裝。 我查看了較舊的 MongoDB 驅動程序的源代碼,發現流被用作實際流,因此當時它並沒有在幕后偷偷地轉換為 ByteBuffer。
似乎沒有方法可以在數據到來時流式傳輸數據,現在除了將文件加載到內存中別無他法。 我可以看到它在許多情況下如何成為問題,但也許我只是無法理解這種方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.