2016-08-03 11 views
6

Ich muss vom Web-Service ein Bild zurückgeben, das auf der Festplatte gespeichert ist.C# Web.API Zurückgegebenes Bild. MemoryStream -> StreamContent liefert browken image

In meinem Controller führe ich einige Suchvorgänge durch und sende Datei. Hier ist mein Code.

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; 
} 

Wenn ich diese Zeile nicht stimmen, ich sehe in Fiedler Antwort Körperlänge 0

imgStream.Seek(0, SeekOrigin.Begin); 

Ansonsten funktioniert es. Was fehlt mir und warum muss ich das tun?

Antwort

10

Nach dem Speichern der Stream-Position ist am Ende. Dies bedeutet, dass das Lesen von ihm keine Bytes zurückgibt.

Jeder läuft in genau dieses Problem einmal :)