1

こんにちは、エラーが表示されます "

'System.IO.Stream' には 'CopyTo' の定義が含まれておらず、タイプ 'System.IO.Stream' の最初の引数を受け入れる拡張メソッド 'CopyTo' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか? ?)

" プロジェクトで次のコード行を使用しています。

Bitmap img;
 using (var ms = new MemoryStream())
 {
    fu.PostedFile.InputStream.CopyTo(ms);
    ms.Position = 0;
    img = new System.Drawing.Bitmap(ms);
 }

なぜこのエラーが発生するのですか? これを解決するには?
私を助けてください...

4

2 に答える 2

3

Stream.CopyTo は .NET 4 で導入されました。.Net 2.0 をターゲットにしているため、利用できません。内部的にCopyToは、主にこれを行っているため (余分なエラー処理があります)、このメソッドをそのまま使用できます。便宜上、拡張メソッドにしました。

//it seems 81920 is the default size in CopyTo but this can be changed
public static void CopyTo(this Stream source, Stream destination, int bufferSize = 81920)
{
    byte[] array = new byte[bufferSize];
    int count;
    while ((count = source.Read(array, 0, array.Length)) != 0)
    {
       destination.Write(array, 0, count);
    }
}

だからあなたは簡単にできる

using (var ms = new MemoryStream())
{       
    fu.PostedFile.InputStream.CopyTo(ms);
    ms.Position = 0;
    img = new System.Drawing.Bitmap(ms);
}
于 2013-06-30T13:22:01.017 に答える