簡體   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