• 【.NETCORE】文件提供程序


    1.PhysicalFileProvider 物理文件提供程序:

    Startup->ConfigureServices中注入

    IFileProvider PhysicalProvider = new 
    PhysicalFileProvider(System.IO.Directory.GetCurrentDirectory());
    services.AddSingleton(PhysicalProvider);

    在Home控制器中拿到服务

    private readonly IFileProvider fileProvider;
    public HomeController(ILogger<HomeController> logger, 
    IFileProvider  fileProvider)
            {
                _logger = logger;
                this.fileProvider = fileProvider;
            }
    

     Index方法中我们使用文件提供程序

    public IActionResult Index()
            {
              IDirectoryContents content= fileProvider.GetDirectoryContents("");
                return View(content);
            }
    

      Index.cshtml中打印出项目中所有文件

    @{
        ViewData["Title"] = "Home Page";
    }
    @using Microsoft.Extensions.FileProviders
    
    @foreach (IFileInfo item in Model)
    {
        if (item.IsDirectory)
        {
            <li><span>@item.Name</span></li>
        }
        else
        {
            <li>@item.Name--@item.Length bytes</li>
        }
    }
    

      

     2.EmbeddedFileProvider 嵌入式文件

    创建一个文件

     属性设置为嵌入式资源

     生成时就会将该文件内容嵌入dll中

     Startup->ConfigureServices中注入

     //嵌入式文件
    IFileProvider emeddedFileProvider = new EmbeddedFileProvider(Assembly.GetEntryAssembly());
    services.AddSingleton<IFileProvider>(emeddedFileProvider);
    

      

    Home控制器中创建一个Read方法 读取我们的嵌入式文件

     /// <summary>
            /// 读取嵌入式文件
            /// </summary>
            /// <returns></returns>
            public IActionResult Read()
            {
               IFileInfo file =fileProvider.GetFileInfo("Files/jsconfig.json");
                using (var stream= file.CreateReadStream())
                {
                    byte[] buffer = new byte[stream.Length];
                    stream.Read(buffer, 0, buffer.Length);
                    string fileString = System.Text.Encoding.Default.GetString(buffer);
                    return Content(fileString);
                }
            }
    

     

     启动项目访问我们的Read方法

     

     成功访问到了我们dll中嵌入的内容

    3.组合文件访问程序

    可访问多种组合的文件资源

     //物理文件
    IFileProvider PhysicalProvider = new 
    PhysicalFileProvider(System.IO.Directory.GetCurrentDirectory());
    
    //嵌入式文件
     IFileProvider emeddedFileProvider = new 
    EmbeddedFileProvider(Assembly.GetEntryAssembly());
               
    //组合
    IFileProvider compositeFileProvider =
     new CompositeFileProvider(PhysicalProvider, emeddedFileProvider);
    //注入
    services.AddSingleton(compositeFileProvider);
    

      

    直接启动程序
    物理文件提供程序与嵌入式文件提供程序功能都能使用

  • 相关阅读:
    Split Temporary Variable
    Introduce Explaining Variable
    Replace Temp with Query
    Extract Method
    自测代码的价值
    代码的坏味道
    Divergent Change & Shotgun Surgery
    Large Class
    Long Method
    Duplicated Code
  • 原文地址:https://www.cnblogs.com/lbonet/p/14683551.html
Copyright © 2020-2023  润新知