Abstrakcija ponudnika datotek Ponudniki datotek so plast abstrakcije nad datotečnim sistemom. Njegov glavni vmesnik je IFileProvider. IFileProvider ponuja metode za pridobivanje informacij o datotekah (IFileInfo), informacij o imeniku (IDirectoryContents) in nastavitev obvestil o spremembah (z uporabo IChangeTokena).
Vmesnik IFileInfo ponuja metode in lastnosti za upravljanje posameznih datotek in imenikov. Ima dve boolovski lastnosti, Exists in IsDirectory, ter dve lastnosti za dva profila, Name in Length (na bajt), poleg tega pa vključuje tudi lastnost LastModified date. Vsebino datoteke lahko preberete tudi z metodo CreateReadStream.
Implementacija ponudnika datotek Na voljo so tri implementacije IFileProviderja: fizična, vgrajena in kompozitna. Fizični tip se uporablja za dostop do datotek v dejanskem sistemu. Vdelani sistem se uporablja za dostop do datotek, vgrajenih v sestav. Sestavljena vrsta je kombinacija prvih dveh metod.
PhysicalFileProvider PhysicalFileProvider omogoča dostop do fizičnega datotečnega sistema. Vsebuje tip datotek System.IO, ki zajema vse poti do imenika in njegovih podimenikov. Ta vrsta obsega omejuje dostop do imenika in njegovih podimenikov ter preprečuje operacijam zunaj obsega dostop do datotečnega sistema. Pri instanciranju takšnega ponudnika mu morate zagotoviti pot do mape, ki jo strežnik lahko uporabi kot osnovno pot za vse zahteve tega ponudnika (kar omejuje zahteve za dostop zunaj poti). V ASP.NET Core aplikaciji lahko neposredno instancirate ponudnika PhysicalFileProvider ali pa zahtevate vmesnik IFileProvider z uporabo vbrizgavanja odvisnosti konstruktorja v krmilniku in storitvi. Slednje vodi do rešitev, ki so pogosto bolj prilagodljive in lažje za testiranje.
Ustvarjanje PhysicalFileProviderja je pravzaprav zelo preprosto, samo materializirajte ga in mu pošljite fizično pot. Nato lahko vsebino preiskujete skozi njen imenik ali pa uporabite podpoti za pridobitev informacij o določeni datoteki.
Spremenite metodo ConfigureServices() razreda Startup, da registrirate storitve, potrebne za dostop do lokalnih datotek, nato pa jih dodate v vmesno programsko opremo preko vbrizganja konstruktorjev v vmesni program, da lahko nadzorujete dostopno pot datotek na enem mestu (tj. ob zagonu aplikacije)
|