2010-02-04 19 views
8

क्या कोई यात्री/mod_rails के साथ रेल एप्लिकेशन चलाते समय फ़ाइल अपलोड आकार को सीमित करने के लिए एक अच्छा समाधान जानता है। अनुरोध तुरंत अस्वीकार कर दिया जाना चाहिए, ताकि फ़ाइल सर्वर पर स्थानांतरित न हो।रेल फ़ाइल अपलोड आकार सीमा

अब तक जो समाधान मिले हैं, वे सभी वर्णन करते हैं कि कैसे सीमा को लागू करने के लिए मंगलेल को पैच करना है, लेकिन मुझे इस एप्लिकेशन के साथ यात्री का उपयोग करना है।

उत्तर

9

आप अपाचे के माध्यम से अपलोड आकार टोपी LimitRequestBody निर्देशों का उपयोग कर सकते हैं:

<Directory "/var/www"> 
    LimitRequestBody 1024 
</Directory> 

http://httpd.apache.org/docs/1.3/mod/core.html#limitrequestbody

+0

होना चाहिए इस एक संभव समाधान है

$('#id_of_input_file_field').change(function() { if(this.files[0].size > MAX_LIMIT_FOR_FILE){ $('#id_of_input_file_field').val(''); alert('File exceeds maximum size limit ') } }); 

MAX_LIMIT_FOR_FILE बाइट में है। यहां समस्या यह है कि अपाचे केवल कनेक्शन छोड़ देता है और इसके कारण त्रुटि पृष्ठ – Mato

+0

हाँ दिखाना संभव नहीं है, यह सर्वर पक्ष सत्यापन है और इसका उपयोग सुरक्षा उद्देश्यों के लिए किया जाता है। आपको शायद क्लाइंट पक्ष पर एक स्क्रिप्ट का उपयोग करना चाहिए ताकि गैर-दुर्भावनापूर्ण उपयोगकर्ताओं को स्पॉट पर अधिसूचित किया जा सके। यदि आप 'ड्रॉपज़ोन' जैसी प्लगइन का उपयोग कर रहे हैं तो यह 'maxFilesize' – zehelvion

17

या आप यात्री के साथ nginx उपयोग कर रहे हैं, सर्वर ब्लॉक में जोड़ें:

server { 
    client_max_body_size 100M; 
} 

http://wiki.nginx.org/NginxHttpCoreModule#client_max_body_size

+0

सेट करने जितना आसान है, मैं अपाचे का उपयोग कर रहा हूं, लेकिन वैसे भी धन्यवाद – Mato

8

आप कर सकते हैं उपयोगकर्ता को सूचित करने के लिए निम्न जावास्क्रिप्ट का उपयोग करें कि चयनित फ़ाइल अधिकतम सीमा से अधिक है। लेकिन अभी भी सर्वर पक्ष सत्यापन के लिए यह आवश्यक है। इसलिए यदि आप 1 एमबी की अधिकतम सीमा निर्धारित करना चाहते हैं तो MAX_LIMIT_FOR_FILE का मूल्य 1048576

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