我正在編寫一個組件來從HTTP服務傳輸大(4 + GB)。該組件採用URL和目標流。目標流可能是一個文件流,或者它可能是一個流向不同的HTTP服務或甚至兩者。由於我的組件的作者,我需要做的這些步驟,直到我做:從http服務傳輸大文件
- 從HTTP流中讀取一個合理大小的緩衝區,
- 寫這個緩衝區目的流,
- 刷新目標流(輸出到磁盤,網絡等)
我應該永遠不會超過內存中數據緩衝區的大小。
我使用flurl使我的HTTP調用到服務器。我嘗試以下方法,使我的電話
var stream = await flurlClient.GetStreamAsync();
這給我回一個MemoryStream,因爲它會填滿,並採取了儘可能多的內存文件的大小,這是行不通的。
var response = flurlClient.GetAsync();
var stream = response.Content.ReadAsStreamAsync();
再次,一個內存流。
var response = flurlClient.GetAsync();
var stream = new CustomFlushingSteam();
response.Content.CopyToAsync(stream);
這一個看起來很有希望,但很可惜,它試圖利用單個寫寫()語句整個事情。
我怎樣才能完成這項任務,而不會浪費我的記憶?我更喜歡使用flurl,但我並沒有與它聯繫在一起。
Flurl會讓你訪問底層的'NetworkStream'嗎?如果沒有,它不適用於這 –