Mohssen A Mohssen نشر 22 ديسمبر 2021 أرسل تقرير نشر 22 ديسمبر 2021 (معدل) لدي مجموعة من الصور مخزنة في قاعدة بيانات MongoDB وحاولت أن أقوم بجلب أحد هذه الصور وإرسالها من خلال الكود التالي: @app.route("/images/<image_id>.jpg") def load_image(image_id): # يتم هنا جلب الصور في شكل bson.Binary return image_binary لكن يبدو أنه لا يمكن إرجاع قيمة ثنائية Binary من خلال فلاسك Flask. كيف يمكنني أن أقوم بإرجاع هذه الصور، هل يجب أن أقوم بتحويلها إلى base64 ثم إرجاع هذه القيمة أم يوجد طريقة أخرى؟ تم التعديل في 22 ديسمبر 2021 بواسطة Mohssen A Mohssen 1 اقتباس
1 سامح أشرف نشر 22 ديسمبر 2021 أرسل تقرير نشر 22 ديسمبر 2021 يمكنك حل هذه المشكلة من خلال إنشاء كائن Response (عبر الدالة make_response) وتحديد الترويسة Content-Type لتكون من نوع الصورة مثل image/jpeg ، وإن أردت أن يتم تحميل الصورة وحفظها بدلًا من عرضها على الشاشة فيجب أن تقوم بتحديد التوريسة Content-Disposition لتحمل القيمة attachment، على النحو التالي: @app.route('/images/<image_id>.jpg') def load_image(image_id): image_binary = read_image(image_id) # يتم هنا جلب الصور في شكل bson.Binary response = make_response(image_binary) response.headers.set('Content-Type', 'image/jpeg') # لتحميل الصورة وحفظها بدلًا من عرضها response.headers.set('Content-Disposition', 'attachment', filename='%s.jpg' % image_id) return response يمكنك أيضًا أن تستعمل الدالة send_file لإرسال كائن من نوع io.BytesIO: from flask import Flask, send_file @app.route("/images/<image_id>.jpg") def load_image(image_id): image_binary = read_image(image_id) # يتم هنا جلب الصور في شكل bson.Binary return send_file( io.BytesIO(image_binary), mimetype='image/jpeg', as_attachment=True, attachment_filename='%s.jpg' % image_id ) تستطيع أيضًا حفظ الصورة في ملف مؤقت على الخادم وإرسال هذا الملف بشكل عادي، والتحقق من وجود الملف أولًا لكي لا يتم إعادة حفظ نفس الصورة في كل مرة يتم طلبها. 2 اقتباس
السؤال
Mohssen A Mohssen
لدي مجموعة من الصور مخزنة في قاعدة بيانات MongoDB وحاولت أن أقوم بجلب أحد هذه الصور وإرسالها من خلال الكود التالي:
لكن يبدو أنه لا يمكن إرجاع قيمة ثنائية Binary من خلال فلاسك Flask.
كيف يمكنني أن أقوم بإرجاع هذه الصور، هل يجب أن أقوم بتحويلها إلى base64 ثم إرجاع هذه القيمة أم يوجد طريقة أخرى؟
تم التعديل في بواسطة Mohssen A Mohssen1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.