Abstrakce poskytovatele souborů Poskytovatelé souborů jsou vrstvou abstrakce nad souborovým systémem. Jeho hlavním rozhraním je IFileProvider. IFileProvider zpřístupňuje metody získávání informací o souborech (IFileInfo), adresářových informací (IDirectoryContents) a nastavení oznámení o změnách (pomocí IChangeTokenu).
Rozhraní IFileInfo poskytuje metody a vlastnosti pro manipulaci s jednotlivými soubory a adresáři. Má dvě booleovské vlastnosti, Exists a IsDirectory, a dvě vlastnosti pro dva profily, Name a Length (per byte), a také obsahuje vlastnost LastModified date. Obsah souboru můžete také číst metodou CreateReadStream.
Implementace File Provider Existují tři implementace IFileProvideru, ze kterých lze vybírat: fyzická, embeddovaná a kompozitní. Fyzický typ se používá k přístupu k souborům v samotném systému. Embedded se používá k přístupu k souborům vloženým v assembleru. Složený typ je kombinací prvních dvou metod.
PhysicalFileProvider PhysicalFileProvider poskytuje přístup k fyzickému souborovému systému. Zahrnuje typ System.IO.File, který zahrnuje všechny cesty k adresáři a jeho podadresářům. Tento typ rozsahu omezuje přístup k adresáři a jeho podadresářům, čímž zabraňuje operacím mimo rozsah přístupu k souborovému systému. Při instanci takového poskytovatele musíte poskytnout adresářovou cestu, kterou server může použít jako základní cestu pro všechny požadavky tohoto poskytovatele (což omezuje přístupové požadavky mimo cestu). V aplikaci ASP.NET Core můžete přímo instancovat poskytovatele PhysicalFileProvider, nebo si můžete vyžádat rozhraní IFileProvider pomocí injekce závislostí konstruktoru v řadiči a službě. To vede k řešením, která jsou často flexibilnější a snadněji testovatelná.
Vytvoření PhysicalFileProvideru je vlastně velmi jednoduché, stačí ho materializovat a předat mu fyzickou cestu. Pak můžete obsah procházet jeho adresářem nebo zadat podcesty, abyste získali informace o konkrétním souboru.
Upravte metodu ConfigureServices() třídy Startup tak, aby registrovala služby potřebné k přístupu k lokálním souborům, a pak je přidejte do middleware pomocí injekce konstruktorů v middleware, abyste mohli ovládat přístupovou cestu souborů na jednom místě (tj. při spuštění aplikace)
|