मैं वास्तव में read()
ऑपरेशन से डरता हूं क्योंकि यह स्मृति का उपयोग करता है। उदाहरण के लिए, कोई भी 1 जीबी फ़ाइल अपलोड करके मेरे सर्वर को डीडीओएस कर सकता है, सही?बोतल में सुरक्षित रूप से अपलोड की गई फ़ाइल का आकार कैसे जांचें?
name = request.forms.get('name')
data = request.files.get('data')
if name and data.file:
raw = data.file.read() # This is dangerous for big files
filename = data.filename
return "Hello %s! You uploaded %s (%d bytes)." % (name, filename, len(raw))
क्या अपलोड किया गया फ़ाइल आकार प्राप्त करने के लिए कोई सुरक्षित समाधान है? एक अनुमान फाइल सिस्टम से फाइल आकार प्राप्त करना होगा; request.files.get('data')
शायद कहीं temp फ़ाइल में संग्रहीत है?
यदि आप apache जैसे कुछ के तहत wsgi के माध्यम से बोतल चलाते हैं, तो अपाचे अपलोड आकार को सीमित कर सकता है। – jordanm
बोतल स्टोर अनुरोध। किसी और अस्थायी फ़ाइलों में सभी अपलोड की गई फ़ाइलें (या बाइटियो बफर पर्याप्त होने पर) जैसे ही आप उनमें से किसी तक पहुंचते हैं। यदि सर्वर सभी काम करता है, तो आप अपलोड आकार को प्रतिबंधित करना चाहते हैं, request.content_length की जांच करें। यदि आप बस यह सुनिश्चित करना चाहते हैं कि सब कुछ स्मृति में फिट बैठता है, तो अपलोड किए गए फ़ाइलों को छोटे उत्तरों में पढ़ें/कॉपी करें जैसा कि उनके उत्तर में pyfunc द्वारा वर्णित है। – defnull