کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش MVC Core-آموزش استفاده از ارائه دهندگان فایل(Provider) در MVC Core

آموزش MVC Core-آموزش استفاده از ارائه دهندگان فایل(Provider) در MVC Core

Problem

نحوه دسترسی به اطلاعات دایرکتوری و فایل در ASP.NET Core، تضمین دسترسی محدود به فایل سیستم.

Solution

یک پروژه خالی ایجاد کنید و کلاس Startup را اصلاح کنید:

public void ConfigureServices(  
       IServiceCollection services)  
   {  
       services.AddSingleton< IFileProvide r>(  
           new PhysicalFileProvider(Directory.GetCurrentDirectory()));  
   }  
  
   public void Configure(  
       IApplicationBuilder app,  
       IHostingEnvironment env)  
   {  
       app.UseHelloFileProvider();  

ایجاد middle برای خواندن محتویات دایرکتوری.

public class HelloFileProviderMiddleware  
 {  
     private readonly RequestDelegate next;  
     private readonly IFileProvider fileProvider;  
  
     public HelloFileProviderMiddleware(  
         RequestDelegate next,  
         IFileProvider fileProvider)  
     {  
         this.next = next;  
         this.fileProvider = fileProvider;  
     }  
  
     public async Task Invoke(HttpContext context)  
     {  
         var output = new StringBuilder("");  
  
         IDirectoryContents dir = this.fileProvider.GetDirectoryContents("");  
         foreach (IFileInfo item in dir)  
         {  
             output.AppendLine(item.Name);  
         }  
  
         await context.Response.WriteAsync(output.ToString());  
     }  
 }  

public class HelloFileProviderMiddleware  
{  
    private readonly RequestDelegate next;  
    private readonly IFileProvider fileProvider;  
  
    public HelloFileProviderMiddleware(  
        RequestDelegate next,  
        IFileProvider fileProvider)  
    {  
        this.next = next;  
        this.fileProvider = fileProvider;  
    }  
  
    public async Task Invoke(HttpContext context)  
    {  
        IFileInfo file = this.fileProvider.GetFileInfo("Startup.cs");  
  
        using (var stream = file.CreateReadStream())  
        using (var reader = new StreamReader(stream))  
        {  
            var output = await reader.ReadToEndAsync();  
            await context.Response.WriteAsync(output.ToString());  
        }  
    }  
}  

Discussion

ASP.NET Core فراهم می کند encapsulation نوع System.IO.File را به منظور محدود کردن دسترسی به سیستم فایل از طریق نوع PhysicalFileProvider، که اجرای IFileProvider است.
IFileProvider را می توان به عنوان یک سرویس (in Startup) پیکربندی کرد و سپس به عنوان یک dependency در middleware، controllers و غیره تزریق می شود. این پیکربندی دسترسی فایل (مثلا دایرکتوری برای دسترسی) را در یک مکان، در شروع راه اندازی برنامه نگه می دارد.
IFileProvider دارای دو متد مهم است:

  • GetDirectoryContents : IdirectoryContents را باز می گرداند. این را می تواند برای تکرار فایل ها / پوشه ها در یک دایرکتوری استفاده کرد.
  • GetFileInfo: IFileInfo را باز می گرداند. این می تواند برای خواندن فایل از طریق CreateReadStream آن استفاده شود.
1397/03/02 2360 991
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...