البرمجة

رفع الملفات في ASP.NET Core باستخدام IFormFile وتفادي Request.Files

عندما يتعلق الأمر برفع الملفات في ASP.NET Core، يجب أن نأخذ في اعتبارنا التغييرات التي طرأت على هذا الجانب مع التحديثات الأخيرة. في الإصدارات السابقة من .NET، كنا نستخدم Request.Files للتعامل مع ملفات الطلب، ولكن في ASP.NET Core، هناك تغييرات جوهرية في الطريقة التي يتم بها التعامل معها.

بدلاً من Request.Files، يجب عليك الآن الاعتماد على IFormFile لرفع الملفات. يمكنك القيام بذلك عبر استخدام معامل الطلب (HttpContext.Request.Form.Files). دعنا نلقي نظرة على كيفية التعامل مع هذا في سياق ASP.NET Core:

csharp
[HttpPost] public IActionResult UploadFiles() { var files = HttpContext.Request.Form.Files; foreach (var file in files) { if (file.Length > 0) { // احصل على اسم الملف var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); // قم بحفظ الملف أو معالجته كما تشاء // مثلاً: استخدم مسار الخادم لحفظ الملف var filePath = Path.Combine("مسار_التخزين", fileName); using (var fileStream = new FileStream(filePath, FileMode.Create)) { file.CopyTo(fileStream); } } } // قم بإرجاع رد أو قم بتحديد السلوك الإضافي الذي تريده بعد رفع الملفات return Ok("تم رفع الملفات بنجاح"); }

في هذا المثال، نقوم بفحص HttpContext.Request.Form.Files للحصول على الملفات المرسلة كجزء من الطلب. يمكنك بعد ذلك القيام بالمعالجة المناسبة لكل ملف. يتم حفظ كل ملف باستخدام file.CopyTo() في المسار الذي تحدده.

من الجدير بالذكر أن هذه الطريقة هي لتعامل مبسط، ويمكنك تكييفها حسب احتياجاتك الخاصة.

المزيد من المعلومات

بالطبع، دعنا نوسع أكثر على الموضوع. في ASP.NET Core، يُفضل استخدام IFormFile لرفع الملفات بدلاً من HttpPostedFileBase الذي كان يُستخدم في الإصدارات السابقة من .NET.

تحديد معلومات الملف:

بعد استلام الملف باستخدام HttpContext.Request.Form.Files، يمكنك الوصول إلى معلومات مهمة حول الملف. على سبيل المثال:

csharp
foreach (var file in files) { if (file.Length > 0) { var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); var contentType = file.ContentType; var fileSizeInBytes = file.Length; // يمكنك إجراء المزيد من التحققات واسترجاع المعلومات الإضافية } }

التحقق من نوع الملف وحجمه:

يمكنك تحقق من نوع الملف وحجمه قبل حفظه أو معالجته. على سبيل المثال:

csharp
foreach (var file in files) { if (file.Length > 0) { var allowedFileTypes = new[] { "image/jpeg", "image/png", "application/pdf" }; var maxFileSize = 5 * 1024 * 1024; // 5 MB if (!allowedFileTypes.Contains(file.ContentType)) { // نوع الملف غير مسموح به // يمكنك رفض الملف أو إرسال رسالة خطأ مناسبة } if (file.Length > maxFileSize) { // الملف كبير جداً // يمكنك رفض الملف أو إرسال رسالة خطأ مناسبة } // استمر في معالجة الملف } }

تخزين الملفات:

بالنسبة لتخزين الملفات، يمكنك استخدام المسارات المطلقة أو النسبية على حسب احتياجاتك. يُفضل تخزين الملفات في مكان يكون متاحًا للخادم ويتوافق مع أمان التطبيق.

csharp
var filePath = Path.Combine("مسار_التخزين", fileName); using (var fileStream = new FileStream(filePath, FileMode.Create)) { file.CopyTo(fileStream); }

الرد على العميل:

في نهاية المعالجة، يمكنك إرجاع رد مناسب إلى العميل لتأكيد نجاح رفع الملفات.

csharp
return Ok("تم رفع الملفات بنجاح");

باستخدام هذه الإرشادات، يمكنك تحقيق رفع ملفات ناجح في تطبيق ASP.NET Core الخاص بك.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر