将 API 的图像结果显示到 WEB



从字节到图像的检索和图像转换效果很好

接口代码:

[HttpGet]
public HttpResponseMessage MemberImage(string employeeId)
{
IMemberProcedures storedProcedure = new StoredProcedure();
IValidation validation = new CommonRepository();
RequestModel request = SQL.Read(out List<MemberDetail> members, storedProcedure.SAMPLESTOREDPROCEDURE("::1", employeeId));
byte[] imgData = members[0].Picture;
MemoryStream ms = new MemoryStream(imgData);
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent(ms);
response.Content.Headers.ContentType = new
MediaTypeHeaderValue("image/png");
return response;
}

在邮递员中尝试此操作会返回完全转换的图像

现在我想在我的网络上显示该图像,这就是我尝试过的;

网页代码:

[HttpGet]
public ActionResult MemberImage(string id)
{
IGetInterface Ip = new IpHelper();
HttpResponseMessage image = API.GetResponse($"api/QMS/MemberImage?employeeId={id}");
var foo = image.Content.ReadAsStringAsync().Result;
return File(Enumerable.Range(0, foo.Length)
.Where(x => x % 2 == 0)
.Select(x => Convert.ToByte(foo.Substring(x, 2), 16))
.ToArray(), "image/png");
}

这会触发"不支持的媒体"错误,我认为我没有以正确的方式将图像从 Web 控制器显示到我的视图。

还有其他方法可以将API的图像结果显示到WEB吗?

最后,经过几次重试,我通过使用ReadAsByteArrayAsync()让它工作。

[HttpGet]
public ActionResult MemberImage(string id)
{
IGetInterface Ip = new IpHelper();
HttpResponseMessage image = API.GetResponse($"api/QMS/MemberImage?employeeId={id}");
byte[] foo = image.Content.ReadAsByteArrayAsync().Result;
return File(foo, "image/png");
}

通过执行此操作显示它以供查看;

<img src='@Url.Action("MemberImage", new { id = Model.Member.EmployeeNumber })'>

最新更新