رفع الملفات
يجعل Gin التعامل مع رفع الملفات متعدد الأجزاء أمراً سهلاً. يوفر الإطار طرقاً مدمجة في gin.Context لاستقبال الملفات المرفوعة:
c.FormFile(name)— استرجاع ملف واحد من الطلب حسب اسم حقل النموذج.c.MultipartForm()— تحليل نموذج الأجزاء المتعددة بالكامل، مما يتيح الوصول إلى جميع الملفات المرفوعة وقيم الحقول.c.SaveUploadedFile(file, dst)— طريقة مريحة لحفظ ملف مستلم إلى مسار وجهة على القرص.
حد الذاكرة
يُعيّن Gin حد ذاكرة افتراضي قدره 32 ميجابايت لتحليل النماذج متعددة الأجزاء عبر router.MaxMultipartMemory. الملفات ضمن هذا الحد تُخزن مؤقتاً في الذاكرة؛ وأي شيء يتجاوزه يُكتب في ملفات مؤقتة على القرص. يمكنك تعديل هذه القيمة لتناسب احتياجات تطبيقك:
router := gin.Default()// Lower the limit to 8 MiBrouter.MaxMultipartMemory = 8 << 20 // 8 MiBملاحظة أمنية
اسم الملف الذي يبلغ عنه العميل (file.Filename) لا ينبغي الوثوق به. قم دائماً بتنظيفه أو استبداله قبل استخدامه في عمليات نظام الملفات. راجع توثيق Content-Disposition على MDN للمزيد من التفاصيل.
الصفحات الفرعية
- ملف واحد — رفع وحفظ ملف واحد لكل طلب.
- ملفات متعددة — رفع وحفظ ملفات متعددة في طلب واحد.
- تحديد حجم الرفع — تقييد حجم الرفع باستخدام
http.MaxBytesReader.