• .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

     使用方法:

    将原来src中改成Component.InvokeAsync 就可以使用了
    

     

    效果如图:

  • 相关阅读:
    (转)linux书籍推荐
    (转)X Windows与GNOME,KDE的关系
    (转)学习Linux编程开发必读书籍
    (转)详解C中volatile关键字
    博客开张了
    VMware虚拟产品简介
    c++ eof()
    旋转矩阵
    VMware文件辨别
    Microsoft HTTPAPI/2.0 use Port 80 – 无法启动WAMP Apache
  • 原文地址:https://www.cnblogs.com/WNpursue/p/10447208.html
Copyright © 2020-2023  润新知