2016-12-07 6 views
-5

HttpClient.GetStreamAsync()メソッドを使用してファイルをダウンロードしようとしています。しかしここに問題があります。 GetStreamAsync()メソッドはreadonlyストリームを返します。したがって、私はバイト配列のバッファを宣言するのに、Lengthプロパティを使用して、バイトを読み込もうとしています。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'読み取ろうとイムそこにバイト配列バッファを宣言するために、Lengthプロパティを使用することはできません。ストリームはバイトを返すことができます...配列を宣言する必要はありません... –

+2

ところで、あなたは '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:修正しました、ありがとう! –

関連する問題