2012-10-21 29 views
26

Tôi đang cố gắng đoạn mã sau vào đầu ra một hình ảnh từ một api web asp.net, nhưng chiều dài cơ thể phản ứng luôn luôn là 0.hình ảnh đầu ra sử dụng 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; 
} 

Bất cứ lời khuyên?

CÔNG TRÌNH:

[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

Không hoàn toàn chắc chắn nếu tôi có bạn - nhưng bạn có thể kiểm tra [** cách viết hình ảnh tới outputStream **] (http://stackoverflow.com/questions/5629251/c-sharp-outputting-image-to -response-output-stream-giving-gdi-error) –

+0

Tôi không nhận được lỗi, tôi chỉ không nhận được gì cả. – lolol

+0

bạn đang nhận lại mã trạng thái nào? –

Trả lời

5

Các điều sau đây:

  1. Đảm bảo con đường là chính xác (duh)

  2. Đảm bảo định tuyến của bạn là đúng. Bộ điều khiển của bạn là ImageController hoặc bạn đã xác định một tuyến tùy chỉnh để hỗ trợ "GetImage" trên một số bộ điều khiển khác. (. Bạn sẽ nhận được một phản ứng 404 cho việc này)

  3. Đảm bảo bạn mở dòng:

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

tôi đã cố gắng một cái gì đó tương tự và nó làm việc cho tôi.

+0

cảm ơn bạn, mã trong bản cập nhật của tôi hoạt động. – lolol

1

Thay vì ByteArrayContent, bạn cũng có thể sử dụng lớp StreamContent để hoạt động hiệu quả hơn với luồng.

Các vấn đề liên quan