.net core使用ViewComponent将页面图片转码成base64

时间:2022-05-04 10:25:00

.net core使用ViewComponent将页面图片转码成base64

.net core使用ViewComponent将页面图片转码成base64

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory; namespace MyPorject.MVC.ViewComponents
{
public class ImgToBase64ViewComponent : ViewComponent
{
private readonly IHostingEnvironment _hostingEnvironment;
private readonly IMemoryCache _memoryCache;
public ImgToBase64ViewComponent(IHostingEnvironment hostingEnvironment, IMemoryCache memoryCache)
{
_hostingEnvironment = hostingEnvironment;
_memoryCache = memoryCache;
} public async Task InvokeAsync(string src)
{
string cacheKey = src;
string result = await _memoryCache.GetOrCreateAsync(cacheKey, async entry =>
{
string webRootPath = _hostingEnvironment.WebRootPath;
string path = webRootPath + @"\" + src.TrimStart('~').TrimStart('/').Replace(@"/", @"\").ToString(); try
{
using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
var byteArray = new byte[fs.Length];
await fs.ReadAsync(byteArray, 0, byteArray.Length);
result = "data:image/jpeg;base64," + Convert.ToBase64String(byteArray);
}
}
catch (Exception ex)
{
result = ex.Message;
}
return await Task.FromResult(result);
});
return View("", result);
}
}
}

添加default.cshtml

.net core使用ViewComponent将页面图片转码成base64

.net core使用ViewComponent将页面图片转码成base64

使用方法:

.net core使用ViewComponent将页面图片转码成base64
将原来src中改成Component.InvokeAsync 就可以使用了

.net core使用ViewComponent将页面图片转码成base64

.net core使用ViewComponent将页面图片转码成base64

效果如图:

.net core使用ViewComponent将页面图片转码成base64