2009-10-01 15 views
5

मुझे वसंत वेबफ्लो 1.0 और स्ट्रैट्स 1.3 का उपयोग करके फ़ाइल अपलोड करने में समस्या आ रही है।स्ट्रूट्स - फ़ाइलें अपलोड करना

public class AttachDocumentsForm extends SpringBindingActionForm { 
    // note, SpringBindingActionForm extends struts' ActionForm 
    private FormFile file; 
    //snip 
} 

अब, मेरी समस्या है कि जब मैं फ़ॉर्म सबमिट करेंगे, file क्षेत्र हमेशा null है:

<html:form action="/flowAction" method="post" enctype="multipart/form-data"> 
    <!-- snip --> 
    <html:file property="file" name="attachDocumentsForm" size="50"/> 
    <!-- snip --> 
</html:form> 

फार्म कुछ इस तरह है:

jsp कुछ इस तरह है । फॉर्म पर अन्य फ़ील्ड ठीक से भर चुके हैं, और यदि मैं RequestContext के माध्यम से खोदता हूं, तो मुझे लगता है कि फाइल को कुछ डेटा संरचनाओं को गहरा दफनाया गया है।

यहाँ बुरी बदसूरत तरह से है कि मैं लगाव पर प्राप्त कर सकते हैं:

// 'context' is the RequestContext 
ServletExternalContext servletExternalContext = (ServletExternalContext) context.getExternalContext(); 
ActionForm form = (ActionForm) servletExternalContext.getRequest().getAttribute("actionForm"); 
FormFile file = (FormFile) form.getMultipartRequestHandler().getFileElements().get("file"); 

मैंने देखा है कि मेरी फार्म पर MultipartRequestHandlernull है, और मुझे लगता है कि इस का हिस्सा हो सकता समस्या है, लेकिन मैंने इसका लाभ उठाने के लिए CommonsMultipartRequestHandler के उदाहरण के साथ इसे पॉप्युलेट करने का प्रयास किया है।

file फ़ील्ड को सही ढंग से पॉप्युलेट करने के लिए मुझे क्या करने की आवश्यकता है?

+0

नहीं आप का उपयोग कर, ActionForm एक्सेसर से फाइल प्राप्त करने में सक्षम होना चाहिए (FormFile) form.getFile()? –

उत्तर

0

एक्सेसर विधियों के साथ ActionForm (attachDocumentsForm द्वारा संदर्भित) में FormFile फ़ाइल नामक एक फ़ील्ड जोड़ें।

अपलोड की गई फ़ाइल को form.getFile() पर कॉल करके एक्सेस किया जा सकता है।

मुझे आशा है कि इस मदद करता है!

+0

धन्यवाद, लेकिन यह सिर्फ समस्या है। मेरे पास पहले से ही एक्शनफॉर्म पर उन फ़ील्ड में से एक है, लेकिन यह हमेशा शून्य है। –

+0

मुझे नहीं पता कि 2006 से कोई भी इस माध्यम से आया है, लेकिन मेरे पास एक विरासत परियोजना में एक ही समस्या है जो मैं काम कर रहा हूं ... अगर किसी के पास समाधान है, तो यह बहुत अच्छा होगा :-) – Philippe

+0

वही समस्या यहाँ। –

1

मुझे लगता है कि आप वसंत डिस्पैचर सर्वलेट कॉन्फ़िगर करना चाहिए: http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html#mvc-multipart-resolver

+0

अद्यतन के लिए धन्यवाद, मैं इसे देख लूंगा। मुझे पता है कि मैंने आपके द्वारा लिंक किए गए दस्तावेज़ों से परामर्श लिया है, और उस प्रक्रिया के हिस्से के रूप में एक मल्टीपार्ट रिज़ॉल्वर को परिभाषित किया है। मुझे पूरा यकीन नहीं है कि मैंने इसे सही तरीके से तार दिया था (हालांकि मैंने इसे देखने के कुछ महीने बाद)। मुझे मौका मिलने पर मैं एक और पास ले जाऊंगा। –

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