اذهب إلى المحتوى
  • 0

كيفية رفع الملفات بإستخدام Flask-Restful في فلاسك Flask؟

Mohssen A Mohssen

السؤال

أحاول إنشاء خدمة API ، وكنت أتساءل عن كيفية إتاحة خدمة رفع الملفات عن طريق Flask-Restful. بإستخدام فلاسك Flask فقط يمكنني الحصول على الملف من خلال الكود التالي:

class Upload(Resource):
    def post(self):
        img = request.files['image']
        if img:
            # Store image ...
        else:
            return {"error": True, "message": "there is no file" }

وفي HTML يتم عرض حقل إدخال لرفع الملف:

<input type="file" name="img">

ولكن كيف أقوم بإستقبال ملف بإستخدام إضافة Flask-Restful عبر واجهة برمجية API وليس من خلال عنصر input؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

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

حدد المسار إلى مجلد التحميل

app.config['UPLOAD_FOLDER']

يحدد الحجم الأقصى (بالبايت) للملفات المراد تحميلها

app.config['MAX_CONTENT_PATH']

تحتوي الشفرة التالية على قاعدة عنوان URL "/ upload" التي تعرض’upload.html "في مجلد النماذج وقاعدة عنوان URL" / upload - file "لاستدعاء وظيفة upload لمعالجة عملية التحميل.

يحتوي "upload.html" على زر اختيار ملف وزر إرسال.

<html>
   <body>
      <form action = "http://localhost:5000/uploader" method = "POST" 
         enctype = "multipart/form-data">
         <input type = "file" name = "file" />
         <input type = "submit"/>
      </form>   
   </body>
</html>

بمجرد تحديد ملف ، انقر فوق إرسال. تستدعي طريقة نشر النموذج عنوان URL "/ upload_file". ينفذ برنامج تحميل الوظيفة uploader عملية حفظ.

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

from flask import Flask, render_template, request
from werkzeug import secure_filename
app = Flask(__name__)

@app.route('/upload')
def upload_file():
   return render_template('upload.html')
	
@app.route('/uploader', methods = ['GET', 'POST'])
def upload_file():
   if request.method == 'POST':
      f = request.files['file']
      f.save(secure_filename(f.filename))
      return 'file uploaded successfully'
		
if __name__ == '__main__':
   app.run(debug = True)

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...