2016-08-03 4 views
6

ディスクに保存されているイメージをWebサービスから返す必要があります。C#Web.APIイメージを返す。 MemoryStream - > StreamContentが画像を返します

私のコントローラでは、いくつかの検索操作を実行し、ファイルを送信します。ここに私のコードです。

public HttpResponseMessage Get([FromUri]ShowImageRequest req) 
{ 
    // ....................... 
    // ....................... 

    // load image file 
    var imgStream = new MemoryStream(); 

    using (Image image = Image.FromFile(fullImagePath)) 
    { 
     image.Save(imgStream, ImageFormat.Jpeg); 
    } 

    imgStream.Seek(0, SeekOrigin.Begin); // it does not work without this 

    var res = new HttpResponseMessage(HttpStatusCode.OK); 
    res.Content = new StreamContent(imgStream); 
    res.Content.Headers.ContentType = new ediaTypeHeaderValue("image/jpeg"); 
    return res; 
} 

私はこの行を追加しないと、私は0

imgStream.Seek(0, SeekOrigin.Begin); 

シオマネキレスポンスボディの長さで見そうでなければ、それは動作します。私は何が欠けていますか、なぜこれを行う必要がありますか?

答えて

10

ストリームの保存後は、最後に位置します。これは、それからの読み取りがバイトを返さないことを意味します。

誰もがこの正確な問題に一度遭遇しました:

関連する問題