Filleverantörsabstraktion Filleverantörer är ett abstraktionslager ovanpå filsystemet. Dess huvudsakliga gränssnitt är IFileProvider. IFileProvider exponerar metoder för att erhålla filinformation (IFileInfo), kataloginformation (IDirectoryContents) och ställa in ändringsnotiser (genom att använda en IChangeToken).
IFileInfo-gränssnittet tillhandahåller metoder och egenskaper för att manipulera enskilda filer och kataloger. Den har två booleska egenskaper, Exists och IsDirectory, samt två egenskaper för två profiler, Name och Length (per byte), och inkluderar även en egenskap LastModified date. Du kan också läsa filens innehåll via CreateReadStream-metoden.
Implementering av filleverantör Det finns tre implementationer av IFileProvider att välja mellan: fysisk, inbäddad och sammansatt. Den fysiska typen används för att komma åt filer i det faktiska systemet. Inbäddat används för att komma åt filer inbäddade i en assembler. Den sammansatta typen är en kombination av de två första metoderna.
PhysicalFileProvider PhysicalFileProvider ger tillgång till det fysiska filsystemet. Den kapslar in System.IO.File-typen, som täcker alla sökvägar till en katalog och dess underkataloger. Denna typ av omfattning begränsar åtkomsten till en katalog och dess underkataloger, vilket förhindrar att operationer utanför omfattningen får tillgång till filsystemet. När du instansierar en sådan provider måste du tillhandahålla en katalogväg som servern kan använda som basväg för alla förfrågningar som görs av denna provider (vilket begränsar åtkomstförfrågningar utanför sökvägen). I en ASP.NET Core-applikation kan du instansiera en PhysicalFileProvider-leverantör direkt, eller så kan du begära ett IFileProvider-gränssnitt genom att använda konstruktörberoendeinjektion i kontrollern och tjänsten. Det senare resulterar i lösningar som ofta är mer flexibla och lättare att testa.
Att skapa en PhysicalFileProvider är faktiskt väldigt enkelt, bara materialisera den och skicka den till en fysisk väg. Du kan sedan gå igenom innehållet genom dess katalog eller tillhandahålla undervägar för att få information om en specifik fil.
Modifiera ConfigureServices()-metoden i Startup-klassen för att registrera de tjänster som behövs för att komma åt lokala filer, och lägg sedan till dem i mellanvaran via konstruktörinjektion i mellanvaran, så att du kan kontrollera åtkomstvägen för filerna på ett ställe (dvs. när applikationen startar)
|