
یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شیگرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفهای و امکانات کامل!
مشاهده بیشتر
یادگیری MVC Core از مبانی تا پیشرفته: شیگرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژههای کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!
مشاهده بیشترمشخصات مقاله
آموزش MVC Core-آموزش استفاده از ارائه دهندگان فایل(Provider) در MVC Core
آموزش MVC Core-آموزش استفاده از ارائه دهندگان فایل(Provider) در MVC Core
Problem
نحوه دسترسی به اطلاعات دایرکتوری و فایل در ASP.NET Core، تضمین دسترسی محدود به فایل سیستم.
Solution
یک پروژه خالی ایجاد کنید و کلاس Startup را اصلاح کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 | public void ConfigureServices( IServiceCollection services) { services.AddSingleton< IFileProvide r>( new PhysicalFileProvider(Directory.GetCurrentDirectory())); } public void Configure( IApplicationBuilder app, IHostingEnvironment env) { app.UseHelloFileProvider(); <button></button> |
ایجاد middle برای خواندن محتویات دایرکتوری.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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()); } } <button></button> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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()); } } } <button></button> |
Discussion
ASP.NET Core فراهم می کند encapsulation نوع System.IO.File را به منظور محدود کردن دسترسی به سیستم فایل از طریق نوع PhysicalFileProvider، که اجرای IFileProvider است.
IFileProvider را می توان به عنوان یک سرویس (in Startup) پیکربندی کرد و سپس به عنوان یک dependency در middleware، controllers و غیره تزریق می شود. این پیکربندی دسترسی فایل (مثلا دایرکتوری برای دسترسی) را در یک مکان، در شروع راه اندازی برنامه نگه می دارد.
IFileProvider دارای دو متد مهم است:
- GetDirectoryContents : IdirectoryContents را باز می گرداند. این را می تواند برای تکرار فایل ها / پوشه ها در یک دایرکتوری استفاده کرد.
- GetFileInfo: IFileInfo را باز می گرداند. این می تواند برای خواندن فایل از طریق CreateReadStream آن استفاده شود.