Dosya Sağlayıcı soyutlama Dosya Sağlayıcıları, dosya sisteminin üzerinde bir soyutlama katmanıdır. Ana arayüzü IFileProvider'dir. IFileProvider, dosya bilgisi (IFileInfo), dizin bilgisi (IDirectoryContents) ve değişiklik bildirimleri ayarlama (IChangeToken kullanarak) için yöntemler sunar.
IFileInfo arayüzü, bireysel dosya ve dizinleri manipüle etmek için yöntemler ve özellikler sağlar. İki boolean özelliği vardır: Exists ve IsDirectory, ayrıca iki profil için iki özellik, Name ve Length (bayt başı), ayrıca LastModified tarih özelliği de içerir. Dosya içeriğini CreateReadStream yöntemiyle de okuyabilirsiniz.
Dosya Sağlayıcı uygulaması IFileProvider'ın seçebileceğiniz üç uygulaması vardır: fiziksel, gömülü ve kompozit. Fiziksel tip, gerçek sistemdeki dosyalara erişmek için kullanılır. Gömülü, bir montajda gömülü dosyalara erişmek için kullanılır. Bileşik tipi, ilk iki yöntemin birleşimidir.
PhysicalFileProvider PhysicalFileProvider, fiziksel dosya sistemine erişim sağlar. System.IO.File tipini kapsüller; bu tür, bir dizine ve alt dizinlerine giden tüm yolları kapsama alır. Bu tür kapsam, bir dizine ve alt dizinlerine erişimi sınırlar, kapsam dışı işlemlerin dosya sistemine erişmesini engeller. Böyle bir sağlayıcı oluştururken, sunucunun bu sağlayıcının yaptığı tüm talepler için temel yol olarak kullanabileceği bir dizin yolu sağlamanız gerekir (bu da yol dışındaki erişim taleplerini sınırlar). ASP.NET Core uygulamasında doğrudan bir PhysicalFileProvider sağlayıcısı oluşturabilir veya denetleyici ve hizmette üretici bağımlılığı enjeksiyonu kullanarak IFileProvider arayüzü talep edebilirsiniz. İkincisi, genellikle daha esnek ve test edilmesi daha kolay çözümler ortaya çıkarır.
Fiziksel Dosya Sağlayıcısı oluşturmak aslında çok basittir, sadece bunu gerçekleştirin ve fiziksel bir yol verin. Daha sonra içeriği dizininde gezebilir veya belirli bir dosya hakkında bilgi almak için alt yollar sağlayabilirsiniz.
Startup sınıfının ConfigureServices() yöntemini yerel dosyalara erişmek için gereken servisleri kaydedecek şekilde değiştirin ve ardından bunları middleware'de constructor injection ile middleware'a ekleyin, böylece dosyaların erişim yolunu tek bir yerde kontrol edebilirsiniz (örneğin uygulama başladığında)
|