Abstraksi Penyedia File Penyedia File adalah lapisan abstraksi di atas sistem file. Antarmuka utamanya adalah IFileProvider. IFileProvider mengekspos metode untuk mendapatkan informasi file (IFileInfo), informasi direktori (IDirectoryContents), dan mengatur pemberitahuan perubahan (dengan menggunakan IChangeToken).
Antarmuka IFileInfo menyediakan metode dan properti untuk memanipulasi file dan direktori individual. Ini memiliki dua properti boolean, Exists dan IsDirectory, dan dua properti untuk dua profil, Name dan Length (per byte), dan juga menyertakan properti tanggal LastModifikasi. Anda juga dapat membaca konten file melalui metode CreateReadStream.
Implementasi Penyedia File Ada tiga implementasi IFileProvider untuk dipilih: fisik, tertanam, dan komposit. Tipe fisik digunakan untuk mengakses file dalam sistem yang sebenarnya. Tertanam digunakan untuk mengakses file yang disematkan dalam rakitan. Jenis senyawa adalah kombinasi dari dua metode pertama.
Penyedia File Fisik PhysicalFileProvider menyediakan akses ke sistem file fisik. Ini merangkum jenis System.IO.File, yang menjangkau semua jalur ke direktori dan subdirektorinya. Jenis cakupan ini membatasi akses ke direktori dan subdirektorinya, mencegah operasi di luar cakupan mengakses sistem file. Saat membuat instance penyedia semacam itu, Anda harus memberikannya jalur direktori yang dapat digunakan server sebagai jalur dasar untuk semua permintaan yang dibuat oleh penyedia ini (yang membatasi permintaan akses di luar jalur). Dalam aplikasi ASP.NET Core, Anda dapat membuat instance penyedia PhysicalFileProvider secara langsung, atau Anda dapat meminta antarmuka IFileProvider dengan menggunakan injeksi dependensi konstruktor di pengontrol dan layanan. Yang terakhir menghasilkan solusi yang seringkali lebih fleksibel dan lebih mudah diuji.
Membuat PhysicalFileProvider sebenarnya sangat sederhana, cukup wujudkan dan teruskan jalur fisik. Anda kemudian dapat melintasi konten melalui direktorinya atau menyediakan subjalur untuk mendapatkan informasi tentang file tertentu.
Ubah metode ConfigureServices() dari kelas Startup untuk mendaftarkan layanan yang diperlukan untuk mengakses file lokal, lalu tambahkan ke middleware melalui injeksi konstruktor di middleware, sehingga Anda dapat mengontrol jalur akses file di satu tempat (yaitu saat aplikasi dimulai)
|