Filleverandørabstraksjon Filleverandører er et abstraksjonslag oppå filsystemet. Hovedgrensesnittet er IFileProvider. IFileProvider eksponerer metoder for å hente filinformasjon (IFileInfo), kataloginformasjon (IDirectoryContents) og sette endringsvarsler (ved å bruke en IChangeToken).
IFileInfo-grensesnittet gir metoder og egenskaper for å manipulere individuelle filer og kataloger. Den har to boolske egenskaper, Exists og IsDirectory, og to egenskaper for to profiler, Name og Length (per byte), og inkluderer også en LastModified-dato-egenskap. Du kan også lese filinnholdet via CreateReadStream-metoden.
Implementering av filleverandør Det finnes tre implementasjoner av IFileProvider å velge mellom: fysisk, innebygd og sammensatt. Den fysiske typen brukes for å få tilgang til filer i selve systemet. Embedded brukes til å få tilgang til filer som er innebygd i en assembly. Den sammensatte typen er en kombinasjon av de to første metodene.
PhysicalFileProvider PhysicalFileProvider gir tilgang til det fysiske filsystemet. Den kapsler inn System.IO.File-typen, som dekker alle stier til en mappe og dens undermapper. Denne typen omfang begrenser tilgangen til en katalog og dens underkataloger, og hindrer operasjoner utenfor omfanget i å få tilgang til filsystemet. Når du instansierer en slik leverandør, må du gi den en katalogsti som serveren kan bruke som grunnsti for alle forespørsler fra denne leverandøren (som begrenser tilgangsforespørsler utenfor stien). I en ASP.NET Core-applikasjon kan du instansiere en PhysicalFileProvider-leverandør direkte, eller du kan be om et IFileProvider-grensesnitt ved å bruke konstruktøravhengighetsinjeksjon i kontrolleren og tjenesten. Det siste resulterer i løsninger som ofte er mer fleksible og enklere å teste.
Å lage en PhysicalFileProvider er faktisk veldig enkelt, bare materialiser den og send den en fysisk vei. Du kan deretter gå gjennom innholdet gjennom katalogen eller oppgi understier for å hente informasjon om en spesifikk fil.
Endre ConfigureServices()-metoden i Startup-klassen for å registrere tjenestene som trengs for å få tilgang til lokale filer, og legg dem deretter til mellomvaren via konstruktørinjeksjon i mellomvaren, slik at du kan kontrollere tilgangsstien til filene på ett sted (altså når applikasjonen starter)
|