日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何在ASP.NetCore中使用FileProviders

本文轉載自微信公眾號「碼農讀書」,作者碼農讀書。轉載本文請聯(lián)系碼農讀書公眾號。

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

File Provider 抽象層

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

 
 
 
  1. public interface IFileProvider 
  2.     { 
  3.         IDirectoryContents GetDirectoryContents(string subpath); 
  4.  
  5.         IFileInfo GetFileInfo(string subpath); 
  6.  
  7.         IChangeToken Watch(string filter); 
  8.     } 

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

 
 
 
  1. public interface IChangeToken 
  2.    { 
  3.        bool ActiveChangeCallbacks { get; } 
  4.  
  5.        bool HasChanged { get; } 
  6.  
  7.        IDisposable RegisterChangeCallback(Action callback, object state); 
  8.    } 
  9. 下面是 IFileProvider 接口的三個具體實現(xiàn)及應用,羅列如下:

    • PhysicalFileProvider

    用于對 物理文件 的訪問

    • EmbeddedFileProvider

    用于對 程序集 內的文件訪問

    • CompositeFileProvider

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

    使用 PhysicalFileProvider

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

     
     
     
    1. public void ConfigureServices(IServiceCollection services) 
    2.         { 
    3.             services.AddControllersWithViews(); 
    4.  
    5.             IFileProvider physicalProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory()); 
    6.  
    7.             services.AddSingleton(physicalProvider); 
    8.         } 

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

     
     
     
    1. public class HomeController : Controller 
    2.    { 
    3.        private readonly ILogger _logger; 
    4.        private readonly IFileProvider _fileProvider; 
    5.  
    6.        public HomeController(ILogger logger, IFileProvider fileProvider) 
    7.        { 
    8.            _logger = logger; 
    9.            this._fileProvider = fileProvider; 
    10.        } 
    11.    } 

    下面在 Index 方法中使用 GetDirectoryContents() 來獲取當前項目文件夾下的所有文件,如下代碼所示:

     
     
     
    1. public IActionResult Index() 
    2.        { 
    3.            List lst = new List(); 
    4.            var contents = _fileProvider.GetDirectoryContents(""); 
    5.  
    6.            foreach (IFileInfo fileInfo in contents) 
    7.            { 
    8.                lst.Add(fileInfo.Name); 
    9.            } 
    10.  
    11.            return View(); 
    12.        } 

    使用 EmbeddedFileProvider

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

     
     
     
    1. public void ConfigureServices(IServiceCollection services) 
    2.         { 
    3.             services.AddControllersWithViews(); 
    4.  
    5.             IFileProvider embeddedProvider = new EmbeddedFileProvider(Assembly.GetEntryAssembly()) 
    6.                 ; 
    7.             services.AddSingleton(embeddedProvider); 
    8.         } 

    使用 CompositeFileProvider

    看到 Composite 單詞,是不是想起了設計模式中的 組合模式,對的,這里 CompositeFileProvider 也是類似的操作手法,它可以將一個或者多個的 EmbeddedFileProvider 和 PhysicalFileProvider 進行組合,進而合成一個 CompositeFileProvider 供上層進行訪問,如果有點懵的話,可參考如下代碼:

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

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

    譯文鏈接:https://www.infoworld.com/article/3307516/how-to-use-file-providers-in-aspnet-core.html


    分享名稱:如何在ASP.NetCore中使用FileProviders
    網(wǎng)頁路徑:http://www.dlmjj.cn/article/dpedodh.html