عندما يتعلق الأمر برفع الملفات في 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
، يمكنك الوصول إلى معلومات مهمة حول الملف. على سبيل المثال:
csharpforeach (var file in files)
{
if (file.Length > 0)
{
var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
var contentType = file.ContentType;
var fileSizeInBytes = file.Length;
// يمكنك إجراء المزيد من التحققات واسترجاع المعلومات الإضافية
}
}
التحقق من نوع الملف وحجمه:
يمكنك تحقق من نوع الملف وحجمه قبل حفظه أو معالجته. على سبيل المثال:
csharpforeach (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)
{
// الملف كبير جداً
// يمكنك رفض الملف أو إرسال رسالة خطأ مناسبة
}
// استمر في معالجة الملف
}
}
تخزين الملفات:
بالنسبة لتخزين الملفات، يمكنك استخدام المسارات المطلقة أو النسبية على حسب احتياجاتك. يُفضل تخزين الملفات في مكان يكون متاحًا للخادم ويتوافق مع أمان التطبيق.
csharpvar filePath = Path.Combine("مسار_التخزين", fileName);
using (var fileStream = new FileStream(filePath, FileMode.Create))
{
file.CopyTo(fileStream);
}
الرد على العميل:
في نهاية المعالجة، يمكنك إرجاع رد مناسب إلى العميل لتأكيد نجاح رفع الملفات.
csharpreturn Ok("تم رفع الملفات بنجاح");
باستخدام هذه الإرشادات، يمكنك تحقيق رفع ملفات ناجح في تطبيق ASP.NET Core الخاص بك.