zoukankan      html  css  js  c++  java
  • .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 就可以使用了
    

     

    效果如图:

  • 相关阅读:
    1 外部JavaScript
    1 外部JavaScript
    蓝桥杯:位运算
    Java为什么要配置环境变量
    java数组静态复制和动态复制越界问题
    Dijkstra算法java实现
    离散二元关系实验java实现
    Java中字符串split() 的使用方法
    用java编程实现集合的交、并、差和补运算
    61根据字符出现频率排序(451)
  • 原文地址:https://www.cnblogs.com/WNpursue/p/10447208.html
Copyright © 2011-2022 走看看