2008-10-01 8 views
11

क्या क्लाइंट साइड ब्राउजर पर सत्यापित करने का कोई तरीका है कि किसी जेएसपी पेज से अपलोड की जा रही फ़ाइल का आकार सेट आकार सीमा से अधिक है, बिना उपयोगकर्ता को पूरी फाइल अपलोड करने के लिए मजबूर किए बिना यह बहुत बड़ा था?संपूर्ण फ़ाइल को स्थानांतरित किए बिना जावास्क्रिप्ट (या जावा) के साथ अपलोड की जा रही फ़ाइल के आकार को आप कैसे प्रतिबंधित करते हैं?

मैं संभवतः फ्लैश या ActiveX जैसे किसी भी स्वामित्व नियंत्रण या तकनीकों से दूर रहना चाहता हूं।

धन्यवाद!

उत्तर

4

यह एक सही समाधान नहीं है, लेकिन यदि आप request.getHeader("Content-Length") के साथ सामग्री-लंबाई HTTP शीर्षलेख की जांच करते हैं तो आप संपूर्ण फ़ाइल को स्थानांतरित नहीं करना चुन सकते हैं।

स्पष्टीकरण के माध्यम से, एक बहुत बड़ी फ़ाइल को सभी को एक साथ स्थानांतरित नहीं किया जाएगा। आपको वास्तव में पोस्ट डेटा के उस हिस्से का प्रतिनिधित्व करने वाली स्ट्रीम खोलनी होगी और पूरी चीज़ को स्थानांतरित करने के लिए इसे से पढ़ना होगा।

दूसरी तरफ, यदि आप इनकार करने वाले सेवा हमलों के बारे में चिंतित हैं, तो आप वास्तव में सामग्री-लंबाई शीर्षलेख पर भरोसा नहीं कर सकते हैं, क्योंकि इसे आसानी से जाली जा सकती है। इस मामले में, आपको एक सीमा निर्धारित करनी चाहिए और इस फ़ाइल के हस्तांतरण को स्ट्रीम करना चाहिए, जैसे ही आप उस सीमा को पार कर चुके हैं।

2

सुझाएँ आपको फ़्लैश निर्णय पर पुनर्विचार करेंगे और यहां YUI अपलोडर पर एक नज़र डालें,: अन्य बातों के अलावा

http://developer.yahoo.com/yui/uploader/

, fileSelect घटना आप बाइट में चयनित फ़ाइल का आकार तुरंत बता देंगे इसे चुनने के बाद, लेकिन अपलोड होने से पहले, तो आप तदनुसार प्रतिबंधित कर पाएंगे।

1

जेएसपी या PHP के साथ आप फ़ाइल आकार को प्रतिबंधित नहीं कर पाएंगे क्योंकि अपलोड को तब तक अनुरोध नहीं मिलेगा जब तक कि अपलोड पहले से ही नहीं हुआ है। उस समय आप फ़ाइल को सहेजने का फैसला नहीं कर सकते हैं लेकिन यह बहुत देर हो सकती है।

वहां कुछ जावा समाधान हैं, उदा। MyUploader या Hermes। कुछ लोग कई फ़ाइल अपलोड का समर्थन करते हैं और आंशिक अपलोड फिर से शुरू करते हैं, और कुछ आपको स्रोत कोड भी देते हैं। आप अपना खुद का लेखन भी कर सकते हैं, लेकिन इसे कार्य करने के लिए एक हस्ताक्षरित एप्लेट होने की आवश्यकता होगी क्योंकि इसे स्थानीय फाइल सिस्टम तक पहुंचने की आवश्यकता है। यदि आप अपाचे को अपने वेबसर्वर के रूप में उपयोग कर रहे हैं तो आपको किसी भी समय अपलोड की जाने वाली सभी फ़ाइलों की याद में पूरी फ़ाइल आकार को फिट करने के लिए अपनी मशीन में पर्याप्त रैम की आवश्यकता होगी।