Abstrakcia poskytovateľa súborov Poskytovatelia súborov sú vrstvou abstrakcie nad súborovým systémom. Jeho hlavné rozhranie je IFileProvider. IFileProvider poskytuje metódy získavania informácií o súboroch (IFileInfo), adresárov (IDirectoryContents) a nastavovania notifikácií o zmenách (pomocou IChangeTokenu).
Rozhranie IFileInfo poskytuje metódy a vlastnosti na manipuláciu s jednotlivými súbormi a adresármi. Má dve booleovské vlastnosti, Exists a IsDirectory, a dve vlastnosti pre dva profily, Name a Length (per byte), a obsahuje aj vlastnosť LastModified date. Obsah súboru môžete čítať aj metódou CreateReadStream.
Implementácia poskytovateľa súborov Existujú tri implementácie IFileProvider, z ktorých si môžete vybrať: fyzická, zabudovaná a kompozitná. Fyzický typ sa používa na prístup k súborom priamo v systéme. Embedded sa používa na prístup k súborom vloženým v zostave. Zložený typ je kombináciou prvých dvoch metód.
PhysicalFileProvider PhysicalFileProvider poskytuje prístup k fyzickému súborovému systému. Zapuzdrí typ System.IO.File, ktorý pokrýva všetky cesty k adresáru a jeho podadresárom. Tento typ rozsahu obmedzuje prístup k adresáru a jeho podadresárom, čím zabraňuje operáciám mimo rozsahu prístupu k súborovému systému. Pri inštancovaní takéhoto poskytovateľa mu musíte poskytnúť adresárovú cestu, ktorú server môže použiť ako základnú cestu pre všetky požiadavky poskytované týmto poskytovateľom (čo obmedzuje prístupové požiadavky mimo cesty). V ASP.NET Core aplikácii môžete priamo inštancionovať poskytovateľa PhysicalFileProvider, alebo si môžete vyžiadať rozhranie IFileProvider použitím injekcie závislostí konštruktora v kontroléri a službe. To vedie k riešeniam, ktoré sú často flexibilnejšie a ľahšie testovateľné.
Vytvorenie PhysicalFileProvider je v skutočnosti veľmi jednoduché, stačí ho materializovať a poslať mu fyzickú cestu. Potom môžete obsah prechádzať jeho adresárom alebo poskytnúť podcesty, aby ste získali informácie o konkrétnom súbore.
Upravte metódu ConfigureServices() triedy Startup tak, aby ste registrovali služby potrebné na prístup k lokálnym súborom a potom ich pridajte do middleware cez injekciu konštruktorov v middleware, aby ste mohli kontrolovať prístupovú cestu k súborom na jednom mieste (t. j. pri spustení aplikácie)
|