2016-12-07 5 views
-5

Ich versuche HttpClient.GetStreamAsync() Methode zu verwenden, um eine Datei herunterzuladen. Es gibt jedoch ein Problem hier. GetStreamAsync() Methoden gibt Readonlyly Stream zurück, so kann ich Length -Eigenschaft nicht verwenden, um Bytearray-Puffer zu deklarieren, in dem ich versuche, Bytes zu lesen.Wie verwende ich die HttpClient.GetStreamAsync() Methode?

 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

'i nicht Length-Eigenschaft verwenden kann Byte-Array-Puffer zu erklären, in die bytes' zu lesen im Versuch. stream kann Bytes zurückgeben ... Sie müssen kein Array deklarieren ... –

+2

BTW: Es sieht so aus, als hätten Sie 'byte [] blob = await_httpClient.GetByteArrayAsync' noch nicht ausprobiert. –

Antwort

1

Sie können es nur lesen in ein MemoryStream und die Byte-Array erhalten von dort:

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

Sie sollten wahrscheinlich file.CopyToAsync hier erwarten – ScottRFrost

+0

@ScottRFrost: Behoben, danke! –

Verwandte Themen