2016-12-07 155 views
-5

我正在嘗試使用HttpClient.GetStreamAsync()方法來下載文件。但是這裏有一個問題。 GetStreamAsync()方法返回只讀流,所以我不能使用Length屬性來聲明將嘗試讀取字節的im字節數組緩衝區。如何使用HttpClient.GetStreamAsync()方法?

 using (var file = await _httpClient.GetStreamAsync(url).ConfigureAwait(false)) 
    { 
     // it fails at file.Length below 
     byte[] blob = new byte[file.Length]; 
     await file.ReadAsync(blob, 0, (int)file.Length).ConfigureAwait(false);   
    } 
+1

'我不能用長度財產申報入我試着去閱讀bytes'字節數組緩衝區。流可以返回字節...你不需要聲明一個數組... –

+2

BTW:似乎你還沒有嘗試過'byte [] blob = await _httpClient.GetByteArrayAsync'。 –

回答

1

你只需讀入一個MemoryStream,並從那裏得到的字節數組:

using (var file = await _httpClient.GetStreamAsync(url).ConfigureAwait(false)) 
using (var memoryStream = new MemoryStream()) 
{ 
    await file.CopyToAsync(memoryStream); 
    return memoryStream.ToArray(); 
} 
+0

您應該等待file.CopyToAsync這裏 – ScottRFrost

+0

@ScottRFrost:修正,謝謝! –