آپلود فایل در ASP.NET Core MVC
شناسه پست: 3340
بازدید: 1196

به فرایند بارگزاری فایلها از سیستم کاربر به داخل فضای اپلیکیشن وب، آپلود فایل گفته میشود. action های ASP.NET Core MVC با استفاده از یک تکنیک ساده model binding، از آپلود یک یا بیشتر از یک فایل پشتیبانی میکند.

در این مقاله، میخواهیم نگاهی بیندازیم به اینکه چطور میتوانیم همچین قابلیتی را در برنامه ASP.NET Core MVC داشته باشیم.

اگر برخی از مقالات قبلی این آموزشی سریالی را ندیده اید، توصیه می کنیم صفحه مربوط به این سری آموزشی را مشاهده کنید: آموزش سریالی ASP.NET Core MVC.

برای دانلود سورس کد این مقاله، روی این لینک کلیک کنید: آپلود فایل در ASP.NET Core MVC.

حالا بریم تا کارمان را شروع کنیم.

ایجاد یک کنترل File Input

برای آپلود فایلها، یک اپلیکیشن جدید  ASP.NET Core MVC ایجاد میکنیم و یک کنترلر به نام FileUploadController  میسازیم و یک HTML از کنترل file input برای اکشن Index طراحی میکنیم:

جهت پشتیبانی از آپلود فایلها، باید enctype را با multipart/form-data مشخص کنیم. ویژگی enctype، تعیین میکند که چطور داده های فرم زمانی که به سرور ارسال میشوند باید رمزگذاری شوند. ویژگی enctype فقط زمانیکه method  فرم از نوع POST است، میتواند مورد استفاده قرار گیرد.

عنصر file input از آپلود چند فایل پشتیبانی میکند. با حذف ویژگی multiple در این عنصر، میتوانیم آن را محدود به انتخاب فقط یک فایل کنیم.

نقش Model Binding

ما میتوانیم با استفاده ازاینترفیس IFormFile از طریق Model Binding، به فایلهای آپلود شده به application دسترسی داشته باشیم. Model Binding در ASP.NET Core MVC، داده ها را از درخواستهای HTTP به پارامترهای action method مپ میکند. IFormFile ارائه دهنده فایلی است که با HttpRequest فرستاده میشود و دارای ساختار زیر است:

به عنوان یک تدبیر امنیتی، هرگز نباید بدون اعتبارسنجی به ویژگی FileName اعتماد کنیم.

هنگام آپلود فایل ها با استفاده از model binding و اینترفیس IFormFile، اکشن متد می تواند یک IFormFile واحد یا یک IEnumerable<IFormFile> را که چندین فایل را ارائه می دهد را بپذیرد. ما می توانیم بر روی فایلهای آپلود شده حلقه بزنیم، آنها را در سیستم فایل محلی ذخیره کنیم و سپس از فایل ها مطابق با منطق برنامه خود استفاده کنیم:

یک breakpoint در متد ()Index قرار دهیم و برنامه را اجرا کنیم:

مثال آپلود فایل در ASP.NET Core MVC

زمانیکه فایلها را انتخاب میکنیم و بر روی Upload کلیک میکنیم، میتوانیم کد را debug کرده و ببینیم چطور فایلها در سیستم فایل سرور آپلود میشوند.

اینجا ما فقط تعداد و اندازه فایلهای آپلود شده را به همراه مسیر فایلها برمیگردانیم.

فایل های آپلود شده با استفاده از تکنیک IFormFile، قبل از پردازش، در حافظه یا دیسک روی سرور وب بافر می شوند. داخل action method، محتویات IFormFile به صورت یک stream قابل دسترسی هستند. علاوه بر سیستم فایل محلی، فایل ها را می توان به محل ذخیره سازی Azure Blob یا Entity Framework استریم کرد.

خوب، آپلود فایل تمام شد، بیایید آنچه را که یاد گرفتیم را خلاصه کنیم.

نتیجه گیری

در این مقاله، عناوین زیر را یاد گرفتیم:

  • ایجاد یک کنترل file upload در برنامه ASP.NET Core MVC
  • به کار گیری model binding برای گرفتن فایلهای آپلود شده
  • خواندن و کپی کردن فایلها به stream

در قسمت بعدی این سری از آموزش، ما تزریق وابستگی در ASP.NET Core MVC را یاد خواهیم گرفت.

نویسنده

امید عباسی
من امید عباسی هستم. سالهاست که در زمینه برنامه نویسی با تکنولوژی دات نت فعالیت میکنم و عاشق این هستم که تجربیات و دانش خودم را در این زمینه با دیگران به اشتراک بزارم. خیلی دوست دارم که نظر و انتقاد خودتون رو در مورد این نوشته برای من بنویسید تا بتونم در آینده، مطالب بهتر و ارزشمندتری را برای شما فراهم کنم. در صورت داشتن هرگونه سوال هم در قسمت دیدگاه ها میتونید با بنده در ارتباط باشید