Directory browsing چیست؟


خب سلام.

میخوام درباره قابلیت Directory browsing یکم حرف بزنیم. خب این قابلیت کارش اینه که به یوزر ما اجازه بده که بتونه توی فایل ها و فولدر های موجود داخل یک فولدر خاص ، حرکت کنه.

منظورم بطور کلی یک چیزی مثل تصویر بالایی هست.

این قابلیت بطور کلی غیر فعاله توی asp.net core ولی وجود داره و در صورت نیاز میشه که فعال بشه.

برای فعال کردن این قابلیت ، کافیه توی متد ConfigureServices ، اکستنشن متد AddDirectoryBrowser رو سر IServiceCollection صدا بزنید.

services.AddDirectoryBrowser();

حالا توی مرحله بعد ، باید توی متد Configure یک میدلویر به pipeline اضافه کنید.

app.UseDirectoryBrowser();

خب ، وقتی این میدلویر اضافه بشه ، شما با وارد کردن نام دایرکتوری (که داخل پوشه wwwroot هست) می تونید فایل ها و دایرکتوری های دگ ای که داخل همون پوشه هستن رو ببینید و توشون حرکت کنید ولی عملا همه دایرکتوری های موجود توی wwwroot باز هستن و هیچ محدودیتی نیست.

خب این رو هم میشه به روش زیر حل کرد

app.UseDirectoryBrowser(new DirectoryBrowserOptions(
{
                FileProvider = new PhysicalFileProvider(
               Path.Combine(env.ContentRootPath, &quotwwwroot\\lib&quot)),
               RequestPath = &quot/files&quot
  });

کافیه به میدلویر مربوطه ، یک شی از جندس DirectoryBrowserOptions بدید. دو پراپرتی FileProvider و RequestPath رو هم براش ست کنید.

FileProvider در اصل از نوع IFileProvider هست که ما اینجا بهش یک شی از PhysicalFileProvider اختصاص میدیم که توی اون ، آدرس اون پوشه ای که قصد داریم اجازه بدیم بشه بهش دسترسی گرفت رو قرار دادیم.

و بعدش هم RequestPath که url ای هست که کاربر باید توی مرورگرش بزنه تا بتونه به این فولدر ما دسترسی پیدا کنه.

یک چیز دگ هم بگم. هیچ لزومی نداره که حتما اگر نیازه این قابلیت رو فعال کنید ، تصاویر و یا .... رو داخل wwwroot بزارید . میتونید توی هر پوشه دگ ای توی پروژتون بزارید و از همین روش استفاده کنید.

این میدلویر هم قبل از میدلویر UseRouting قرار میگیره.

خب در آخر مجددا بگم که این قابلیت استفاده ازش خوب نیست و به دلیل مشکلات امنیتی که میتونه بوجود بیاره غیر فعاله ولی شاید یک موقعی نیاز شد!. کسی چه میدونه!!

موفق باشید.


مقالات بیشتر در دات نت زوم

https://t.me/DotNetZoom