0

我需要在json響應中傳遞圖像。 這裏是我的控制器:使用web api傳遞數據與圖像

public IHttpActionResult GetStudents() 
    { 
     var data = db.Students.ToList(); 
     return Ok(data); 
    } 

該代碼顯然返回的所有數據爲每個學生,並返回student_image列VARBINARY,但我需要它來爲圖像傳遞。

我可以返回到圖像,如果它要返回的唯一的事,這裏是代碼:

public HttpResponseMessage GetStudentImages(string id) 
    { 
     var img = (from s in db.Students select new { s.student_image, s.student_id }).Where(a => a.student_id == id).FirstOrDefault(); 
     var result = new HttpResponseMessage(); 

     if (img == null) 
     { 
      result.StatusCode = HttpStatusCode.NotFound; 
     } 
     else 
     { 
      result.Content = new ByteArrayContent(img.student_image); 
      result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg"); 
     } 
     return result; 
    } 

如何傳遞的響應裏面的形象呢?謝謝。

+0

你忘了增加的'開始else'如下:'結果=新HttpResponseMessage(HttpStatusCode.OK);' –

+0

的GetStudentImages正常工作。問題是當我將它返回到列表中時。 – seesharp

+0

在列表裏面? –

回答

0

以下將返回由包含每個圖像字節數組的Image屬性組成的StudentModel的列表。

public class StudentModel 
{ 
    public string Name { get; set; } 
    public ImageModel Image { get; set; } 
} 

public class ImageModel 
{ 
    public string ContentType { get; private set; } 
    public byte[] Content { get; private set; } 

    public ImageModel(string contentType, byte[] content) 
    { 
     ContentType = contentType; 
     Content = content; 
    } 
} 

public IHttpActionResult GetStudents() 
{ 
    var data = db.Students.Select(
     student => new StudentModel 
     { 
      Name = student.Name, 
      Image = new ImageModel("image/jpeg", student.student_image) 
     } 
    ); 
    return Ok(data); 
}