我在下面有一个函数用于返回图像和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);
};
如果包含图片,这是否是返回响应的合适方式?如果是这样,我如何从ajax调用中获取此响应数据,包括图像和ID(可以使用Json.parse吗?但这是bytedata)?
答案 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;
}