Fájlszolgáltató absztrakció A fájlszolgáltatók egy absztrakciós réteget alkotnak a fájlrendszer tetején. Fő interfésze az IFileProvider. Az IFileProvider elérhetővé teszi a fájlinformációk (IFileInfo), könyvtárinformációk (IDirectoryContents) és a változásértesítések beállítását (IChangeToken használatával).
Az IFileInfo interfész módszereket és tulajdonságokat biztosít az egyes fájlok és könyvtárak kezelésére. Két boolean tulajdonsága van, Exists és IsDirectory, valamint két tulajdonsága két profilhoz, Név és Hossz (bájtonként), valamint tartalmaz egy LastModified dátumtulajdonságot is. A fájl tartalmát a CreateReadStream módszerrel is olvashatod.
Fájlszolgáltató megvalósítása Az IFileProvider három megvalósítása közül választhatsz: fizikai, beágyazott és összetett. A fizikai típust a tényleges rendszerben lévő fájlok elérésére használják. Beágyazott fájlokat használnak egy assembly beágyazott fájlokhoz. A vegyület típus az első két módszer kombinációja.
PhysicalFileProvider A PhysicalFileProvider hozzáférést biztosít a fizikai fájlrendszerhez. A System.IO.File típust foglalja magában, amely minden útvonalat egy könyvtárhoz és annak alkönyvtáraihoz vezet. Ez a fajta hatáskör korlátozza a hozzáférést egy könyvtárhoz és annak alkönyvtáraihoz, megakadályozva, hogy a hatókörön kívüli műveletek hozzáférjenek a fájlrendszerhez. Egy ilyen szolgáltató indításakor olyan könyvtárútvonalat kell biztosítani neki, amelyet a szerver alapútként használhat minden ilyen kéréshez (ami korlátozza az útvonalon kívüli hozzáférési kérelmeket). Egy ASP.NET Core alkalmazásban közvetlenül létrehozhatsz egy PhysicalFileProvider szolgáltatót, vagy kérhetsz IFileProvider interfészt a vezérlőben és a szolgáltatásban található konstruktor függőségi injekció használatával. Ez utóbbi olyan megoldásokat eredményez, amelyek gyakran rugalmasabbak és könnyebben tesztelhetők.
A PhysicalFileProvider létrehozása nagyon egyszerű, egyszerűen valósítsd meg, és add át neki egy fizikai út. Ezután végignézheted a tartalmat a könyvtárban, vagy alutakat adhatsz rendelkezésre, hogy információt szerezhess egy adott fájlról.
Módosítsd a Startup osztály ConfigureServices() módszerét, hogy regisztráld a helyi fájlokhoz szükséges szolgáltatásokat, majd hozzáadd őket a middleware-hez constructor injection-en keresztül, így egy helyen (azaz az alkalmazás indulásakor ellenőrizheted) a fájlok hozzáférési útvonalát
|