Abstracția furnizorului de fișiere Furnizorii de fișiere sunt un strat de abstractizare deasupra sistemului de fișiere. Interfața sa principală este IFileProvider. IFileProvider expune metode pentru obținerea informațiilor despre fișiere (IFileInfo), informații din director (IDirectoryContents) și setarea notificărilor de modificare (folosind un IChangeToken).
Interfața IFileInfo oferă metode și proprietăți pentru manipularea fișierelor și directoarelor individuale. Are două proprietăți booleene, Exists și IsDirectory, și două proprietăți pentru două profiluri, Nume și Lungime (pe octet), și include, de asemenea, o proprietate LastModified date. De asemenea, poți citi conținutul fișierului prin metoda CreateReadStream.
Implementarea furnizorului de fișiere Există trei implementări ale IFileProvider din care poți alege: fizică, încorporată și compozită. Tipul fizic este folosit pentru a accesa fișierele din sistemul propriu-zis. Embedded este folosit pentru a accesa fișiere încorporate într-un assembly. Tipul compus este o combinație a primelor două metode.
PhysicalFileProvider PhysicalFileProvider oferă acces la sistemul fizic de fișiere. Acesta cuprinde tipul de fișier System.IO., care se extinde către toate căile către un director și subdirectoarele acestuia. Acest tip de domeniu restricționează accesul la un director și subdirectoarele sale, împiedicând operațiunile din afara domeniului să acceseze sistemul de fișiere. Când instanțiezi un astfel de furnizor, trebuie să-i oferi o cale de director pe care serverul să o poată folosi ca cale de bază pentru toate cererile făcute de acest furnizor (ceea ce restricționează cererile de acces în afara traseului). Într-o aplicație ASP.NET Core, poți instanța direct un furnizor PhysicalFileProvider sau poți solicita o interfață IFileProvider folosind injectarea dependenței constructorului în controler și serviciu. Aceasta din urmă duce la soluții adesea mai flexibile și mai ușor de testat.
Crearea unui PhysicalFileProvider este de fapt foarte simplă, doar materializează-l și transmite-i o cale fizică. Poți apoi parcurge conținutul prin directorul său sau poți oferi subcăi pentru a obține informații despre un fișier specific.
Modifică metoda ConfigureServices() a clasei Startup pentru a înregistra serviciile necesare accesării fișierelor locale, apoi adaugă-le în middleware prin injectarea constructorului în middleware, astfel încât să poți controla calea de acces a fișierelor într-un singur loc (adică când aplicația pornește)
|