दिलचस्प पोस्ट
स्थिर तरीके मजाक CSV प्रारूप में Mysqldump बुनियादी एथ पॉपअप को आमंत्रित करने के लिए ब्राउजर को कैसे रोकें और 401 त्रुटि जेक्जरी का उपयोग कर? AngularJs एनजी-दोहरा में डुप्लिकेट तत्व निकालें jQuery: कुंजीपटल बैकस्पेस आग नहीं होगा? क्रोम एक्सटेंशन में क्लिपबोर्ड पर कॉपी करें JQuery के मोबाइल स्क्रिप्ट की स्थापना जावास्क्रिप्ट दस्तावेज ओवरराइटिंग पेज लिखते हैं? कमांड लाइन के तहत आर स्क्रिप्ट चलते समय आउटपुट त्रुटि / चेतावनी लॉग (txt फ़ाइल) पायथन में सी-जैसे संरचनाएं PHP सरणी में पिछले डाला आइटम का सूचकांक प्राप्त करें WCF त्रुटि: 405 विधि अनुमति नहीं है IPhone पर इंस्टॉल किए गए ऐप्स की सूची प्राप्त करें गतिविधि रिकार्ड समयरेखा HistoryRecord के लिए? उपप्रक्रियाकॉल का आउटपुट पुनर्प्राप्त करना ()

JSF 2.2 <h: inputFile> का उपयोग कर फ़ाइल कैसे अपलोड करें? सहेजी गई फाइल कहां है?

मैं अपने JSF2.2 वेब अनुप्रयोग में फाइल अपलोड करने में सक्षम होना चाहता हूं, इसलिए मैंने नया <h:inputFile> घटक का उपयोग करना शुरू कर दिया।

मेरा एकमात्र सवाल यह है, मैं कैसे स्थान निर्दिष्ट कर सकता हूं, जहां फाइलें सर्वर में सहेजी जाएंगी? मैं उन्हें java.io.File उदाहरण के रूप में पकड़ना चाहता हूं। इसे बैकिंग बीन में कार्यान्वित किया जाना है, लेकिन मैं स्पष्ट रूप से यह नहीं समझता कि कैसे।

Solutions Collecting From Web of "JSF 2.2 <h: inputFile> का उपयोग कर फ़ाइल कैसे अपलोड करें? सहेजी गई फाइल कहां है?"

JSF फ़ाइल को किसी भी पूर्वनिर्धारित स्थान में नहीं सहेज पाएगा यह मूल रूप से आपको केवल javax.servlet.http.Part उदाहरण के स्वाद में अपलोड की गई फ़ाइल प्रस्तुत करेगा जो कि अस्थायी रूप से सर्वर की मेमोरी और / या अस्थायी डिस्क संग्रहण स्थान पर संग्रहीत परिदृश्य के पीछे है, जिसे आपको चिंता नहीं करनी चाहिए।

इसे वांछित स्थान पर सहेजने के लिए, आपको Part#getInputStream() द्वारा सामग्री प्राप्त करने की आवश्यकता है और उसके बाद स्थान का प्रतिनिधित्व करने वाले Path को कॉपी करें । आप इसे (एजेक्स) एक्शन (श्रोता) विधि में सामान्य तरीके से कर सकते हैं। यहां एक ऐसा उदाहरण है जो HTML DOM change ईवेंट के दौरान एक एजेक्स श्रोता के साथ करता है:

 <h:form enctype="multipart/form-data"> <h:inputFile value="#{bean.file}"> <f:ajax listener="#{bean.save}" /> </h:inputFile> </h:form> 
 private Part file; // +getter+setter public void save() { try (InputStream input = file.getInputStream()) { Files.copy(input, new File(uploads, filename).toPath()); } catch (IOException e) { // Show faces message? } } 

uploads फ़ोल्डर और filename पूरी तरह से आपके नियंत्रण में है। उदाहरण के लिए "/path/to/uploads" और Part#getSubmittedFileName() क्रमशः। ध्यान रखें कि किसी भी मौजूदा फ़ाइल को ओवरराइट किया जाएगा, आप File#createTempFile() बनाने के लिए File#createTempFile() का उपयोग करना चाहेंगे

Part#write() उपयोग करें क्योंकि कुछ लोग सुझाव दे सकते हैं यह मूलतः अस्थायी भंडारण स्थान में फ़ाइल का नाम बदल देगा, जैसा कि @MultipartConfig(location) द्वारा पहचाना गया है। ExternalContext#getRealPath() फ़ाइल को फ़ोल्डर को परिनियोजित करने के लिए ExternalContext#getRealPath() उपयोग करें। फ़ाइल मूल युद्ध में फ़ाइल शामिल नहीं है कि सरल कारण के लिए युद्ध का दोबारा नियोजित किया गया है, जब खो जाएगा। इसे हमेशा परिनियोजन फ़ोल्डर के बाहर एक पूर्ण पथ पर सहेजें।

लाइव डेमो के लिए, OmniFaces शोकेस पर <o:graphicImage> डेमो के अंतिम आइटम की जांच करें

यह भी देखें:

  • JSF 2.2 इनपुटफ़ाइल का उपयोग करके फ़ाइल को डिस्क में लिखें
  • अपलोड किए गए फ़ाइल को JSF में कैसे सहेजें
  • सर्वलेट एप्लिकेशन में अपलोड की गई फ़ाइलों को सहेजने का अनुशंसित तरीका