2010-07-20 8 views
5

मुझे क्लाइंट साइड (ब्राउज़र) पर फ़ाइल आकार को केवल शुद्ध जावास्क्रिप्ट के साथ जांचना मुश्किल है।पकड़ो स्प्रिंग एमवीसी मैक्सअपलोड आकार त्रुटि

अब, मेरा सवाल है, क्या सर्वर पक्ष में इस तरह के अपवाद को पकड़ने का कोई तरीका है?

org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size of 2000000 bytes 

क्या होता है कि, यह मेरी @controller पोस्ट विधि तक नहीं पहुंचता है और यह सिर्फ अपवाद है कि मेरे error.jsp द्वारा कैच किया जा रहा है निकलती है।

मैं क्या सोच रहा था कि क्या यह वसंत एमवीसी एनोटेटेड विधि में ऐसा करना संभव है?

@RequestMapping("/uploadFile.htm") 
    public String uploadAttachment(
     HttpServletRequest request, 
     @RequestParam(required = false, value = "attached-file") MultipartFile file, 
     ModelMap model) throws Exception { 

     if(checkfilesize(file)){ 
      //populate model 
      //add error if appplicable 
      //return same form again 
     } 
     //return success 
    }  
} 

मेरी समस्या यह है कि यह इस बिंदु तक नहीं पहुंचता है और केवल एक बड़ा वसा अपवाद फेंकता है।

हालांकि त्रुटि.जेएसपी इसे पकड़ने में सक्षम था, लेकिन अगर मैं उपयोगकर्ता को चेतावनी दे सकता हूं कि फ़ाइल अपलोड करने वाले हैं, तो सीमा से अधिक है।

यह वसंत एमवीसी 2.5 ऐप है जिस तरह से। क्या यह संभव है?

उत्तर

4

यह अपवाद DispatcherServlet.doDispatch() में फेंक दिया गया है, इसलिए आपको HandlerExceptionResolverconfigured in your context का उपयोग करके इसे पकड़ने में सक्षम होना चाहिए।

+0

धन्यवाद .. मैंने इसके बारे में कुछ पढ़ा है और अब मैं इसका उपयोग कर रहा हूं। मेरी समस्या यह है कि, मैं उसी मॉडल और फ़ॉर्म के साथ फिर से उसी फॉर्म को कैसे दिखा सकता हूं: त्रुटि ऑब्जेक्ट्स। जब मैं एक ही रूप में फिर से आगे बढ़ता हूं, तो कोई डेटा पॉप्युलेट नहीं होता है। –

+2

@MarkEstrada यदि सभी मानकों के साथ अनुरोध का आकार, सहित। फ़ाइल पैरामीटर, 'maxUploadSize' से अधिक है, अनुरोध पैरामीटर बिल्कुल पार्स नहीं किया जाएगा। तो यह सत्यापन के साथ अच्छी तरह से एकीकृत नहीं करता है। –

3

वैकल्पिक रूप से, maxUploadSize निर्दिष्ट नहीं करते हैं, और नियंत्रक/सत्यापनकर्ता में जाँच करता है, तो आकार अपने सीमा से अधिक है:

if (file.getSize() > 2000000) { 
    result.rejectValue("file", "<your.message.key>"); 
} 

इस सवाल में फ़ाइल के आकार, फ़ाइल नहीं और अन्य सभी की जाँच करता है अनुरोध पैरामीटर CommonsMultipartResolver के maxUploadSize करता है।

+2

ऐसा करने से किसी को एक बड़ी बड़ी फ़ाइल अपलोड करने और आपकी डिस्क को अव्यवस्थित करने की अनुमति मिल जाएगी। – Lawrence

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