給定一個Readable
流(其可以是或process.stdin
文件流),是有可能/實用pipe()
到自定義Writable
流,將填補兒童Writable
直到一定的大小;然後關閉該子流;打開新的Writable
流並繼續?的Node.js:分割一個可讀流管到多個順序寫流
(上下文是一大塊數據的從管道到CDN上傳,將其分割成,因爲它去一個合理尺寸的塊,而不必首先將數據寫入到磁盤。)
我試過創建一個處理_write
函數中的子流的打開和關閉的Writable
,但是當傳入的塊太大而不適合現有的子流時會出現問題:它必須將一些塊寫入舊溪流;創建新的流;然後在完成_write
呼叫之前等待新流上的open
事件。
另外我想過創建一個額外的Duplex
或Transform
流緩衝管,並確保該塊竄進Writable
肯定比現有的子流可以接受的金額等於或小於,給予Writable
時間更改子流。
或者,這是否過度複雜,並且有一個更簡單的方法來完成原始任務?
我們的目標是不斷讀取數據,從可讀流直到1GB傳遞到可寫流。一旦達到1GB,目標'可寫'流需要被關閉,另一個被打開,然後該過程繼續,從它從中斷的地方讀取相同的'可讀'流。 由於數據高達5GB(CDN的限制)並且涉及的雲服務器磁盤和內存空間有限,因此我不想緩衝它,然後打開Writable:它需要穩定的流量。 – gid