2012-10-21 18 views
26

Próbuję poniższy kod do wyjścia obrazu z ASP.NET Web API, ale długość ciała odpowiedź jest zawsze 0.wyjście obrazu przy użyciu Web API HttpResponseMessage

public HttpResponseMessage GetImage() 
{ 
    HttpResponseMessage response = new HttpResponseMessage(); 
    response.Content = new StreamContent(new FileStream(@"path to image")); 
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg"); 

    return response; 
} 

jakieś wskazówki?

działa:

[HttpGet] 
    public HttpResponseMessage Resize(string source, int width, int height) 
    { 
     HttpResponseMessage httpResponseMessage = new HttpResponseMessage(); 

     // Photo.Resize is a static method to resize the image 
     Image image = Photo.Resize(Image.FromFile(@"d:\path\" + source), width, height); 

     MemoryStream memoryStream = new MemoryStream(); 

     image.Save(memoryStream, ImageFormat.Jpeg); 

     httpResponseMessage.Content = new ByteArrayContent(memoryStream.ToArray()); 

     httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg"); 
     httpResponseMessage.StatusCode = HttpStatusCode.OK; 

     return httpResponseMessage; 
    } 
+0

Nie jestem całkiem pewien, czy mam cię - ale możesz sprawdzić [** jak napisać obraz do outputStream **] (http://stackoverflow.com/questions/5629251/c-sharp-outputting-image-to -response-output-stream-giving-gdi-error) –

+0

Nie otrzymuję błędu, po prostu nic nie otrzymuję. – lolol

+0

jaki kod statusu otrzymujesz? –

Odpowiedz

5

co następuje:

  1. Zapewnić ścieżka jest poprawna (duh)

  2. Upewnij się routingu jest poprawna. Twój kontroler to ImageController lub zdefiniowałeś niestandardową trasę do obsługi "GetImage" na innym kontrolerze. (. Powinieneś otrzymać 404 odpowiedzi na ten temat)

  3. Upewnij się otworzyć strumień:

    var stream = new FileStream(path, FileMode.Open);

Próbowałem coś podobnego i to działa na mnie.

+0

dziękuję, działa kod w mojej aktualizacji. – lolol

1

Zamiast ByteArrayContent można również użyć klasy StreamContent, aby pracować wydajniej ze strumieniami.

Powiązane problemy