日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
.NetCore使用FileProviders

ASP.Net Core 為了便于獲取文件和文件夾信息,監(jiān)視文件變更, 在文件系統(tǒng)中提供了一個(gè)抽象層:File Providers, 這篇文章將會(huì)討論如何使用 File Providers 。

File Provider 抽象層

file prodivers 實(shí)現(xiàn)了 IFileProvider 接口,它的實(shí)現(xiàn)子類(lèi)大概有三塊: Physical,Embedded 和 Composite ,同時(shí)這個(gè)接口提供了可用于獲取文件和文件夾的相關(guān)信息的方法,接口定義如下:

public interface IFileProvider
   {
       IDirectoryContents GetDirectoryContents(string subpath);

       IFileInfo GetFileInfo(string subpath);

       IChangeToken Watch(string filter);
   }

如果要實(shí)現(xiàn) 更改通知,還需要用 IChangeToken 接口,代碼如下:

public interface IChangeToken
  {
      bool ActiveChangeCallbacks { get; }

      bool HasChanged { get; }

      IDisposable RegisterChangeCallback(Action

下面是 IFileProvider 接口的三個(gè)具體實(shí)現(xiàn)及應(yīng)用,羅列如下:

PhysicalFileProvider

用于對(duì) 物理文件 的訪問(wèn)

EmbeddedFileProvider

用于對(duì) 程序集 內(nèi)的文件訪問(wèn)

CompositeFileProvider

實(shí)現(xiàn)前面兩者的混合訪問(wèn)

使用 PhysicalFileProvider

要想在 ASP.Net Core 中演示 PhysicalFileProvider,首先將其注入到 ServiceCollection 容器中,如下代碼所示:

public void ConfigureServices(IServiceCollection services)
       {
           services.AddControllersWithViews();

           IFileProvider physicalProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory());

           services.AddSingleton(physicalProvider);
       }

注入到容器后,現(xiàn)在就可以在 Controller 使用依賴(lài)注入獲取實(shí)例了,如下代碼所示:

public class HomeController : Controller
  {
      private readonly ILogger _logger;
      private readonly IFileProvider _fileProvider;

      public HomeController(ILogger logger, IFileProvider fileProvider)
      {
          _logger = logger;
          this._fileProvider = fileProvider;
      }
  }

下面在 Index 方法中使用 GetDirectoryContents() 來(lái)獲取當(dāng)前項(xiàng)目文件夾下的所有文件,如下代碼所示:

public IActionResult Index()
      {
          List lst = new List();
          var contents = _fileProvider.GetDirectoryContents("");

          foreach (IFileInfo fileInfo in contents)
          {
              lst.Add(fileInfo.Name);
          }

          return View();
      }

.Net Core使用File Providers.Net Core使用File Providers

使用 EmbeddedFileProvider

顧名思義,它就是用來(lái)訪問(wèn)注入到 程序集 中的文件,下面的代碼展示了如何將 EmbeddedFileProvider 注入到 ASP.Net Core 的容器中,如下代碼所示:

public void ConfigureServices(IServiceCollection services)
       {
           services.AddControllersWithViews();

           IFileProvider embeddedProvider = new EmbeddedFileProvider(Assembly.GetEntryAssembly())
               ;
           services.AddSingleton(embeddedProvider);
       }

使用 CompositeFileProvider

看到 Composite 單詞,是不是想起了設(shè)計(jì)模式中的 組合模式,對(duì)的,這里 CompositeFileProvider 也是類(lèi)似的操作手法,它可以將一個(gè)或者多個(gè)的 EmbeddedFileProvider 和 PhysicalFileProvider 進(jìn)行組合,進(jìn)而合成一個(gè) CompositeFileProvider 供上層進(jìn)行訪問(wèn),如果有點(diǎn)懵的話(huà),可參考如下代碼:

var physicalProvider = _env.ContentRootFileProvider;
var embeddedProvider = new EmbeddedFileProvider(Assembly.GetEntryAssembly());
var compositeProvider = new CompositeFileProvider(physicalProvider, embeddedProvider);

總的來(lái)說(shuō),你可以利用 File Providers 來(lái)獲取文件或文件夾的信息,同時(shí)也可以實(shí)現(xiàn)變更通知,如果想在 ASP.Net Core 中實(shí)現(xiàn)文件系統(tǒng)訪問(wèn),可以通過(guò)依賴(lài)注入的方式按需使用你的 File Provider。


文章題目:.NetCore使用FileProviders
URL鏈接:http://www.5511xx.com/article/cceoedp.html