كيفية تصفية تحميلات ملفات تطبيق Flask بناءً على الحجم؟

Nov 20, 2025ترك رسالة

في مجال تطوير الويب، برز Flask كإطار عمل صغير شائع لبناء تطبيقات الويب نظرًا لبساطته ومرونته. أحد المتطلبات الشائعة في العديد من تطبيقات Flask هو التعامل مع تحميلات الملفات. ومع ذلك، فإن السماح للمستخدمين بتحميل الملفات دون القيود المناسبة يمكن أن يؤدي إلى مشكلات مختلفة، مثل الاستهلاك الزائد لمساحة تخزين الخادم والمخاطر الأمنية المحتملة. في هذه المدونة، بصفتي موردًا لقارورة التصفية، سأرشدك خلال عملية تصفية تحميلات ملفات تطبيق Flask بناءً على الحجم.

فهم أساسيات تحميل الملفات في Flask

قبل أن نتعمق في تصفية الحجم، دعنا نراجع بإيجاز كيفية عمل تحميل الملفات في Flask. يوفر Flask طريقة مباشرة للتعامل مع عمليات تحميل الملفات من خلالrequest.filesهدف. عندما يرسل المستخدم نموذجًا يحتوي على حقل إدخال ملف، يمكن الوصول إلى الملف الذي تم تحميله في تطبيق Flask.

فيما يلي مثال بسيط لتطبيق Flask الذي يقبل تحميل الملفات:

من قارورة استيراد القارورة، طلب التطبيق = Flask(__name__) @app.route('/upload', أساليب=['POST']) def upload_file(): file = request.files['file'] if file: file.save('uploads/' + file.filename) إرجاع "تم تحميل الملف بنجاح" إرجاع "لم يتم تحميل ملف" إذا __name__ == '__main__': app.run(debug=True)

في هذا الكود، نحدد الطريق/رفعالذي يقبل طلبات POST. عندما يتم تحميل ملف، يتم حفظه فيالتحميلاتدليل.

Clear glass Filtering FlaskLaboratory Clear Glass Filtering Flasks With Upper Tubulature

لماذا تصفية تحميلات الملفات على أساس الحجم؟

هناك عدة أسباب وراء رغبتك في تصفية تحميلات الملفات بناءً على الحجم. أولاً، يعد تخزين الخادم موردًا محدودًا. إن السماح للمستخدمين بتحميل ملفات كبيرة للغاية يمكن أن يؤدي إلى استنفاد المساحة المتوفرة على الخادم الخاص بك بسرعة. ثانيًا، يمكن أن يتسبب تحميل الملفات الكبيرة في حدوث مشكلات في الأداء، خاصة إذا كان الخادم الخاص بك به نطاق ترددي محدود. بالإضافة إلى ذلك، قد يحاول المستخدمون الضارون تحميل ملفات كبيرة جدًا كشكل من أشكال هجوم رفض الخدمة.

تنفيذ تصفية الحجم في القارورة

لتنفيذ تصفية الحجم في تطبيق Flask، نحتاج إلى التحقق من حجم الملف الذي تم تحميله قبل حفظه. لا يوفر Flask طريقة مباشرة للحصول على حجم الملف من ملفrequest.filesكائن، ولكن يمكننا استخدامأنتالوحدة في بيثون لتحقيق ذلك.

فيما يلي نسخة محدثة من المثال السابق مع تصفية الحجم:

استيراد نظام التشغيل من القارورة استيراد القارورة، طلب التطبيق = Flask(__name__) MAX_FILE_SIZE = 1024 * 1024 # 1MB @app.route('/upload', أساليب=['POST']) def upload_file(): file = request.files['file'] if file: file.seek(0, os.SEEK_END) file_size = file.tell() file.seek(0) إذا file_size > MAX_FILE_SIZE: إرجاع "حجم الملف يتجاوز الحد الأقصى" file.save('uploads/' + file.filename) إرجاع "تم تحميل الملف بنجاح" إرجاع "لم يتم تحميل أي ملف" إذا __name__ == '__main__': app.run(debug=True)

في هذا الكود، نقوم أولاً بتحديد الحد الأقصى لحجم الملفMAX_FILE_SIZE(في هذه الحالة، 1 ميغابايت). عند تحميل ملف نستخدميطلبويخبرطرق الحصول على حجم الملف إذا تجاوز حجم الملف الحد الأقصى، فإننا نعيد رسالة خطأ. وإلا فإننا نحفظ الملف كالمعتاد.

استخدام القارورة - WTF للتحقق من صحة النموذج

Flask - WTF هو امتداد لـ Flask الذي يعمل على تبسيط معالجة النماذج والتحقق من صحتها. يمكننا استخدامه لإجراء تصفية الحجم بطريقة أكثر أناقة.

أولاً، قم بتثبيت Flask - WTF:

قارورة تثبيت النقطة - وتف

فيما يلي مثال لاستخدام Flask - WTF لتصفية الحجم:

من قارورة استيراد قارورة، render_template، طلب من flask_wtf استيراد FlaskForm من wtforms استيراد FileField من wtforms.validators import DataRequired import os app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key' MAX_FILE_SIZE = 1024 * 1024 # فئة 1 ميجابايت UploadForm(FlaskForm): file = FileField('Upload File', validators=[DataRequired()]) @app.route('/upload', الأساليب=['GET', 'POST']) def upload_file(): form = UploadForm() if form.validate_on_submit(): file = form.file.data file.seek(0, os.SEEK_END) file_size = file.tell() file.seek(0) if file_size > MAX_FILE_SIZE: إرجاع "حجم الملف يتجاوز الحد الأقصى" file.save('uploads/' + file.filename) إرجاع "تم تحميل الملف بنجاح" إرجاع render_template('upload.html', form=form) if __name__ == '__main__': app.run(debug=True)

في هذا المثال، قمنا بإنشاء فئة النموذجنموذج التحميلباستخدام قارورة - WTF. النموذج لديهحقل الملفلتحميل الملفات. عند إرسال النموذج، نقوم بإجراء فحص الحجم كما كان من قبل.

اعتبارات لبيئات مختلفة

عند تنفيذ تصفية الحجم، من المهم مراعاة البيئات المختلفة التي قد يعمل فيها تطبيق Flask الخاص بك. على سبيل المثال، في بيئة التطوير، قد ترغب في تعيين حد أقصى منخفض نسبيًا لحجم الملف لأغراض الاختبار. في بيئة الإنتاج، قد تحتاج إلى ضبط الحد بناءً على موارد الخادم الخاص بك وطبيعة التطبيق الخاص بك.

منتجاتنا من قارورة الترشيح

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

منتج شعبي آخر هو منتجناقوارير ترشيح Erlenmeyer زجاجية مخروطية الشكل للمختبر مع أنابيب علوية. يوفر الشكل المخروطي ثباتًا أفضل ومناسبًا لمجموعة متنوعة من مهام الترشيح.

تواصل معنا للمشتريات

إذا كنت مهتمًا بقوارير الترشيح الخاصة بنا أو كانت لديك أي أسئلة حول تصفية الحجم في تطبيقات Flask، فنحن ندعوك للاتصال بنا لإجراء مناقشات حول الشراء. فريق الخبراء لدينا على استعداد لمساعدتك في العثور على المنتجات المناسبة لاحتياجاتك.

مراجع

  • توثيق القارورة
  • بايثونأنتوثائق الوحدة
  • قارورة - وثائق WTF