2010-09-28 8 views
16

मैं फ्लास्क (वेर्कजेग पर आधारित) का उपयोग कर रहा हूं जो पायथन का उपयोग करता है।फ्लास्क/वर्कजेग फ़ाइल डाउनलोड करने के लिए HTTP सामग्री-लंबाई शीर्षलेख को कैसे संलग्न करें

उपयोगकर्ता एक फ़ाइल डाउनलोड कर सकते हैं, मैं send_from_directory-function का उपयोग कर रहा हूं।

हालांकि वास्तव में फ़ाइल डाउनलोड करते समय, HTTP शीर्षलेख content-length सेट नहीं है। इसलिए उपयोगकर्ता को पता नहीं है कि फाइल कितनी बड़ी डाउनलोड की जा रही है।

मैं फ़ाइल आकार (बाइट्स में) प्राप्त करने के लिए पाइथन में os.path.getsize(FILE_LOCATION) का उपयोग कर सकता हूं, लेकिन फ्लास्क में content-length शीर्षलेख सेट करने का कोई तरीका नहीं मिल सकता है।

कोई विचार?

उत्तर

10

मेरा मानना ​​है कि आप इस (untested) की तरह कुछ करना चाहते हैं:

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

देखें: Werkzug's Headers object और Flask's Response object

36

संस्करण 0.6 के बाद से प्रतिक्रिया ऑब्जेक्ट में शीर्षलेख जोड़ने के लिए कैननिकल तरीका make_response विधि (Flask docs देखें) के माध्यम से है।

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

मैं यह भी जरूरत है, लेकिन हर अनुरोधों के लिए है, इसलिए यहां मैं (doc के आधार पर) क्या किया है:

@app.after_request 
def after_request(response): 
    response.headers.add('Access-Control-Allow-Origin', '*') 
    return response 
संबंधित मुद्दे

 संबंधित मुद्दे