مشخصات مقاله
-
1528
-
0.0
-
3435
-
0
-
0
آموزش ایجاد فایل قابل دسترس ASP.NET Core 2.0
ASP.NET Core 2.0 File Providers
Problem
نحوه دسترسی به اطلاعات دایرکتوری و فایل در ASP.NET Core، تضمین دسترسی محدود به فایل سیستم.
Solution
یک پروژه خالی ایجاد کنید و کلاس Startup را اصلاح کنید
public void ConfigureServices(
IServiceCollection services)
{
services.AddSingletonIFileProvider(
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 دارای دو متد مهم است
- IdirectoryContents را باز می گرداند. این را می تواند برای تکرار فایل ها پوشه ها در یک دایرکتوری استفاده کرد.
- IFileInfo را باز می گرداند. این می تواند برای خواندن فایل از طریق CreateReadStream آن استفاده شود.
شما می توانید Source Code از لینک زیر دانلود کنید