首页 > Web开发 > 详细

【.NETCORE】文件提供程序

时间:2021-04-21 10:35:21      阅读:18      评论:0      收藏:0      [点我收藏+]

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);

  

直接启动程序
物理文件提供程序与嵌入式文件提供程序功能都能使用技术分享图片

 

【.NETCORE】文件提供程序

原文:https://www.cnblogs.com/lbonet/p/14683551.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!