繁体   English   中英

在 ASP.NET MVC 视图中显示来自 .NET 核心 API 的图像是否正确?

[英]Is it correct way of displaying Image from .NET Core API in ASP.NET MVC View?

我有一个返回图像的 .NET Core API:

 [HttpGet]
 public IActionResult GetImage()
 {
     return File("Image bytes", "image/jpeg");
 }

Controller:

public async Task<IActionResult> Index()
{
    using var client = new HttpClient();

    var response = await client.GetAsync("uri");

    var bytes = await response.Content.ReadAsByteArrayAsync();
    var base64 = Convert.ToBase64String(bytes);
    var imgSrc = string.Format("data:image/jpeg;base64,{0}", base64);            

    var model = new ImageData { ImageSrc = imgSrc };

    return View(model);
}

在视图中,我只是将图像源传递给img元素。

一切正常,但这是正确的做法吗?

API 返回具有FileContentResult的响应。 有没有办法在不将其转换为 Base64 字符串的情况下呈现该结果并执行我正在做的事情?

感谢任何评论。

您的 API 代码只是返回图像,就像任何其他 web 服务器一样(从客户端的角度来看),所以除非有一些您没有显示的身份验证步骤,否则您应该能够直接使用端点img和 im8B4D45903DZ

获取您的"uri"值并将其插入到渲染页面上的图像标签中:

<img src="uri">

例如,如果您的 uri 是https://www.example.com/controller/getImage那么您最终会得到:

<img src="https://www.example.com/controller/getImage">

然后浏览器会直接连接到你的API服务器来拉取图片。

顺便说一句,如果您只是想从 ASP.NET 内核 API 提供本地文件,您可能会对使用内置的static 文件功能感兴趣:

Static files, such as HTML, CSS, images, and JavaScript, are assets an ASP.NET Core app serves directly to clients by default.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM