سؤال

أنا أستخدم Flask (على أساس Werkzeug) الذي يستخدم Python.

يمكن للمستخدم تنزيل ملف ، أنا أستخدم send_from_directory-وظيفة.

ومع ذلك ، عند تنزيل الملف فعليًا ، رأس HTTP content-length لم يتم تعيين. لذلك ليس لدى المستخدم أي فكرة عن حجم الملف الذي يتم تنزيله.

استطيع ان استخدم os.path.getsize(FILE_LOCATION) في Python للحصول على حجم الملف (بالبايت) ، ولكن لا يمكن إيجاد طريقة لتعيين content-length رأس في قارورة.

أيه أفكار؟

هل كانت مفيدة؟

المحلول

أعتقد أنك ستفعل شيئًا كهذا (لم يخبر):

from flask import Response
response = Response()
response.headers.add('content-length', str(os.path.getsize(FILE_LOCATION)))

يرى: كائن رؤوس Werkzug و كائن استجابة Flask.

نصائح أخرى

منذ الإصدار 0.6 الطريقة الكنسية لإضافة رؤوس إلى كائن استجابة هي عبر make_response الطريقة (انظر مستندات القلاع).

def index():
    response = make_response(render_template('index.html', foo=42))
    response.headers['X-Parachutes'] = 'parachutes are cool'
    return response

كنت بحاجة إلى هذا أيضًا ، ولكن لكل طلبات ، لذلك ما فعلته (بناءً على المستند):

@app.after_request
def after_request(response):
    response.headers.add('Access-Control-Allow-Origin', '*')
    return response
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top