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 就可以使用了
    

     

    效果如图:

  • 相关阅读:
    saltstack实战
    ubuntu16配置mysql5.7主从同步
    推荐书单
    SpringMVC : 乐鲜电子商城
    Idea 使用指南
    SpringBoot : 人人托福系统网站
    Android : SQLite 版学生系统
    Android : 相机及本地储存
    Android : ListView 学生管理
    Android : SeekBar 实现图片旋转缩放
  • 原文地址:https://www.cnblogs.com/WNpursue/p/10447208.html
Copyright © 2011-2022 走看看