2017-08-07 50 views
0

我有一個函數下面,用於返回圖像和身份證。在測試時,我看不到我的ID被返回,而是我只能看到在瀏覽器中返回的圖像(可能由於它完全是字節數據)。在鉻HttpGet返回圖像和身份證

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

響應預覽: enter image description here

這是返回響應的適當的方式,如果有包括圖像?如果是這樣,我如何從ajax調用獲取響應數據,包括圖像和ID(可以使用Json.parse完成嗎?但這是bytedata)?

回答

1

有一兩件事你可以做的是將ID添加在HttpResponseMessage的標題很喜歡這個答案

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