0

json 応答内で画像を渡す必要があります。これが私のコントローラーです:

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

応答内で画像を渡すにはどうすればよいですか? ありがとう。

4

1 に答える 1

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);
}
于 2016-06-28T09:15:21.467 に答える