English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تحميل ملفات Flask

معالجة تحميل الملفات في Flask بسيطة جدًا. يتطلب نموذج HTML يحتوي على خاصية enctype مقدمة بـ 'multipart/form-data' ويتم تقديم النموذج إلى URL المحدد. يتم استخراج الملف من عنصر request.files[] من قبل معالج URL ويتم حفظه في الموقع المطلوب.

يتم حفظ كل ملف مرفوع أولاً في موقف مؤقت على الخادم، ثم حفظه في الموقع النهائي. يمكن أن يكون اسم الملف معطى مسبقًا، أو يمكن الحصول عليه من خصائص filename في عنصر request.files [file]. ولكن، يُنصح باستخدام دالة secure_filename() للحصول على نسخته الآمنة.

يمكنك تعريف مسار مجلد التحميل والحد الأقصى لحجم الملف المرفوع في إعدادات Flask.

مفهومشرح
app.config['UPLOAD_FOLDER']تحديد مسار مجلد التحميل
app.config['MAX_CONTENT_PATH']تحديد الحجم الأقصى للملف المرفوع - بالبites

يحتوي الكود التالي على قاعدة URL: /upload، حيث يعرض ملف upload.html في مجلد templates، وكذلك قاعدة URL => /upload-file التي تقوم بمعالجة عملية التحميل.

ملف upload.html يحتوي على زر اختيار ملف وأزرار تقديم.

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <title>مثال Flask</title>
 </head>
    <body>
      <form action="http://localhost:5000/upload" method="POST"> 
          enctype="multipart/form-data">
          <input type="file" name="file"/>
          <input type="submit" value="تقديم"/>
       </form>
    </body>
 </html>

ستشاهد كما هو موضح في الشريحة التالية -

بعد اختيار الملف النقر على تقديم. طريقة post للنموذج تُدعى URL => /upload_file. تنفيذ دالة الأعلى uploader() عملية حفظ الملف.

هذا هو كود Python للتطبيق Flask.

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ar.oldtoolbag.com
# Date: 2020-08-08
from flask import Flask, render_template, request
 from werkzeug import secure_filename
 app = Flask(__name__)
 @app.route('/upload', methods=['GET', 'POST'])
 def upload_file():
     if request.method == 'POST':
         f = request.files['file']
         print(request.files)
         f.save(secure_filename(f.filename))
         return 'file uploaded successfully'
     else:
         return render_template('upload.html')
 if __name__ == '__main__':
     app.run(debug=True)

بعد تشغيل البرنامج، قم بتشغيل الكود أعلاه، اختر ملف صورة، ثم انقر فوق التحميل للحصول على النتيجة التالية -