HttpGet返回图像和Id

时间:2017-08-07 02:26:35

标签: ajax http asp.net-web-api

我在下面有一个函数用于返回图像和id。在测试时我无法看到我的id被返回,相反,我只能看到我的浏览器中返回的图像(可能是因为它完全是字节数据)。

            int id = 0;
            using (Bitmap bitmap = Image.Generate(context, out id))
            {
                HttpResponse response = context.Response;
                response.CacheControl = "no-cache";
                response.ContentType = "image/JPG";
                bitmap.Save(response.OutputStream, ImageFormat.Jpeg);
                response.End();

                var responseModel = new ResponseModel
                {
                    Id = id,
                    Image = bitmap
                };

                return Ok(responseModel);
            };

Chrome中的响应预览: enter image description here

如果包含图片,这是否是返回响应的合适方式?如果是这样,我如何从ajax调用中获取此响应数据,包括图像和ID(可以使用Json.parse吗?但这是bytedata)?

1 个答案:

答案 0 :(得分:1)

你可以做的一件事是在HttpResponseMessage的标题中添加Id,就像这个答案一样

Asp.net Web API return File with metadata about the file

我在手机上,所以我稍后会更新我的答案,但基本上你只需要将图片作为邮件正文和标题中的任何元数据。然后在客户端上解析响应头以获得您需要的内容。我过去曾经用过这个。

承诺的样本

public HttpResponseMessage Get()
{
    XDocument xDoc = GetXMLDocument();
    int id = CallToGetMyId();

    var response = this.Request.CreateResponse(
        HttpStatusCode.OK, 
        xDoc.ToString(), 
        this.Configuration.Formatters.XmlFormatter
    );
    response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
    {
        FileName = "image.png"
    };
    response.Headers.Add("Id", id);
    return response;
}