2012-08-28 11 views
18

मैं फ्लास्क का उपयोग कर रहा हूं और फोरमैन चला रहा हूं। मैं डेटा जो मैंने स्मृति में बनाया है और मैं चाहता हूं कि उपयोगकर्ता इस डेटा को टेक्स्ट फ़ाइल में डाउनलोड करने में सक्षम हो। मैं स्थानीय डिस्क पर फ़ाइल को डेटा लिखना नहीं चाहता हूं और इसे डाउनलोड के लिए उपलब्ध कराऊंगा।फ्लास्क का उपयोग करके अजगर में, मैं डाउनलोड के लिए ऑब्जेक्ट कैसे लिख सकता हूं?

मैं अजगर के लिए नया हूं। मैंने सोचा कि मैं स्मृति में कुछ फ़ाइल ऑब्जेक्ट बनाउंगा और फिर प्रतिक्रिया हेडर सेट कर सकता हूं, शायद?

उत्तर

28

डिस्क पर उन्हें सहेजे बिना क्लाइंट को स्ट्रीमिंग फ़ाइलें फ्लास्क के दस्तावेज़ों के "पैटर्न" खंड में शामिल हैं - विशेष रूप से, in the section on streaming

from flask import Response 

# construct your app 

@app.route("/get-file") 
def get_file(): 
    results = generate_file_data() 
    generator = (cell for row in results 
        for cell in row) 

    return Response(generator, 
         mimetype="text/plain", 
         headers={"Content-Disposition": 
            "attachment;filename=test.txt"}) 
+0

यह मैं सही दिशा में जा रहा है: मूल रूप से, आप क्या एक पूरी तरह से विकसित अपने इटरेटर Response वस्तु लपेटकर वापसी है। धन्यवाद शॉन! – swidnikk

+1

मुझे नहीं पता कि परिणाम में पंक्ति के लिए कौन सा सेल ... कर रहा है, क्या आप समझा सकते हैं? – swidnikk

+1

@swidnikk - यह जनरेटर अभिव्यक्ति है - यह सूची समझ अभिव्यक्ति की तरह है [x x श्रेणी में x (10)] 'सिवाय इसके कि यह एक सूची के बजाय जनरेटर ऑब्जेक्ट उत्पन्न करता है। '(x में x के लिए x (10)) 'पूरी सूची को एक बार में उत्पन्न नहीं करता है। इसके बजाए यह हर बार 'x'' के अगले मान' __next__' ('पायथन 2.X में' अगला 'के अगले मूल्य का आलसी मूल्यांकन करता है। दस्तावेज़ आपको 'उपज' ('def generator_func() का उपयोग करके जनरेटर बनाने का एक अलग तरीका दिखाते हैं: x में श्रेणी (10) के लिए: उपज x') नेस्टेड 'के लिए' अभिव्यक्तियां हैं क्योंकि मैंने सूचियों की सूची बनाई है डेटा संरचना। क्या इसका कोई मतलब है? –

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

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