JSP फाइल अपलोड & फ़ाइल डाउनलोड कार्यक्रम के उदाहरण

विषय - सूची:

Anonim

इस उदाहरण में, हम JSP के माध्यम से किसी फ़ाइल को अपलोड और डाउनलोड करने के बारे में जानने वाले हैं।

फ़ाइल इनपुट आउटपुट बहुत महत्वपूर्ण संचालन हैं। यहां हम JSP का उपयोग करके एक फ़ाइल पढ़ने और लिखने जा रहे हैं।

JSP फाइल अपलोड

  • हम JSP का उपयोग करके कोई भी फाइल अपलोड कर सकते हैं।
  • यह एक टेक्स्ट फाइल, बाइनरी फाइल, इमेज फाइल या कोई अन्य दस्तावेज हो सकता है।
  • यहां फ़ाइल अपलोडिंग के मामले में, केवल POST विधि का उपयोग किया जाएगा और GET विधि नहीं।
  • मल्टीपर्पस / फॉर्म-डेटा के लिए Enctype विशेषता सेट की जानी चाहिए।

उदाहरण: क्रिया का उपयोग करना

इस उदाहरण में, हम IO ऑब्जेक्ट का उपयोग करके एक फ़ाइल अपलोड कर रहे हैं

लड़ाई_फाइल। जेएसपी

<% @ पृष्ठ भाषा = "जावा" सामग्रीpageEncoding = "ISO-8859-1"%><सिर><मेटा http-equiv = "सामग्री-प्रकार" सामग्री = "पाठ / html; चारसेट = ISO-8859-1"><शीर्षक> गुरु फ़ाइल <शरीर> गुरु फ़ाइल अपलोड: फ़ाइल का चयन करें:
<इनपुट प्रकार = "फ़ाइल" नाम = "फ़ाइल" आकार = "50" />
<इनपुट प्रकार = "सबमिट" मान = "फ़ाइल अपलोड करें" />

क्रिया_फाइल_उप लोड .jsp

<% @ पृष्ठ भाषा = "जावा" सामग्रीpageEncoding = "ISO-8859-1"%><% @ पृष्ठ आयात = "java.io। *, java.util। *, javax.servlet। *"%><% @ पृष्ठ आयात = "javax.servlet.http। *"%><% @ पृष्ठ आयात = "org.apache.commons.fileupload। *"%><% @ पृष्ठ आयात = "org.apache.commons.fileupload.disk। *"%><% @ पृष्ठ आयात = "org.apache.commons.fileupload.servlet। *"%><% @ पृष्ठ आयात = "org.apache.commons.io.output। *"%><सिर><मेटा http-equiv = "सामग्री-प्रकार" सामग्री = "पाठ / html; चारसेट = ISO-8859-1"><शीर्षक> गुरु फ़ाइल अपलोड <शरीर><%फ़ाइल फ़ाइल;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;स्ट्रिंग filePath = "E: / guru99 / data";स्ट्रिंग सामग्रीटाइप = request.getContentType ();अगर (contentType.indexOf ("मल्टीपार्ट / फॉर्म-डेटा")> = 0)) {DiskFileItemFactory कारखाना = नया DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (नई फ़ाइल ("c: \\ अस्थायी"));ServletFileUpload अपलोड = नया ServletFileUpload (factory);upload.setSizeMax (maxFileSize);प्रयत्न{फ़ाइल को सूचीबद्ध करें = अपलोड करें।Iterator i = fileItems.iterator ();out.println ("");out.println ("");जबकि (i.hasNext ()){{FileItem Fi = (FileItem) i.next ();अगर (Fi.isFormField ()) {स्ट्रिंग फ़ील्डनाम = fi.getFieldName ();स्ट्रिंग fileName = fi.getName ();बूलियन isInMemory = fi.isInMemory ();long sizeInBytes = fi.getSize ();फ़ाइल = नई फ़ाइल (filePath + "yourFileName");Fi.write (फ़ाइल);out.println ("अपलोड किया गया नाम: + filePath + fileName + "
");}}out.println ("");out.println ("");} पकड़ (अपवाद पूर्व) {System.out.println (ex);}}अन्य{out.println ("");out.println ("");out.println ("

कोई फ़ाइल अपलोड नहीं हुई

");out.println ("");out.println ("");}%>

कोड की व्याख्या:

लड़ाई_फाइल। जेएसपी

कोड लाइन 12-18: यहां हम फाइल फील्ड के साथ फॉर्म बना रहे हैं, जो सर्वर पर फाइल अपलोड करेगा और एक्शन_फाइल_उप लोड.jsp को भेज दिया जाएगा।

क्रिया_फाइल_उप लोड .jsp

कोड लाइन 20: यहां हम एक विशेष पथ के लिए फ़ाइल पथ दे रहे हैं

कोड लाइन 23-38: यहां हम जांचते हैं कि सामग्री प्रकार मल्टीपार्ट / फॉर्म-डेटा है या नहीं। यदि ऐसा है, तो सामग्री फ़ाइल प्रकार की है, और इसे पढ़ा जाता है। फ़ाइल पढ़ी जाने के बाद, इसे अस्थायी फ़ाइल में लिखा जाता है और फिर अस्थायी फ़ाइल मुख्य फ़ाइल में परिवर्तित हो जाती है।

जब आप उपरोक्त कोड निष्पादित करते हैं, तो आपको निम्न आउटपुट मिलते हैं

आउटपुट:

हम फ़ाइल फ़ाइल विकल्प का उपयोग करके फ़ाइल अपलोड कर रहे हैं और फ़ाइल अपलोड करें बटन फ़ाइल को उस पथ पर अपलोड करेगा जो प्रदान किया गया है।

उदाहरण: JSP संचालन का उपयोग करना

इस उदाहरण में, हम JSP संचालन का उपयोग करके एक फ़ाइल अपलोड करने जा रहे हैं।

हम एक फॉर्म लेंगे जिसमें "अपलोड" बटन होगा और जब आप अपलोड बटन पर क्लिक करेंगे तो फाइल अपलोड हो जाएगी।

अपलोड कर रहा है_1.jsp

<% @ पृष्ठ भाषा = "जावा" सामग्रीpageEncoding = "ISO-8859-1"%><सिर><मेटा http-equiv = "सामग्री-प्रकार" सामग्री = "पाठ / html; चारसेट = ISO-8859-1"><शीर्षक> गुरु अपलोडिंग फ़ाइल <शरीर>फाइल:
<इनपुट प्रकार = "फ़ाइल" नाम = "गुरु_फाइल" आकार = "50" />
<इनपुट प्रकार = "सबमिट" मूल्य = "अपलोड" />

कोड की व्याख्या:

कोड लाइन 11-12: यहां हम एक फॉर्म ले रहे हैं जिसमें सर्वलेट गुरु_उप लोड पर कार्रवाई है जो एक विधि POST से होकर गुजरेगी। इसके अलावा, हम यहाँ पर अभिलिखित अर्थात विशेषता को निर्दिष्ट करते हैं कि किस प्रकार डेटा को इनकोड किया जाना चाहिए और सर्वर को भेजा जाना चाहिए और इसका उपयोग केवल POST विधि के साथ किया जाता है। यहां हम मल्टीपार्ट / फॉर्म-डेटा के रूप में सेट कर रहे हैं जो फ़ाइल के लिए है (जैसा कि डेटा बड़ा होगा)।

कोड लाइन 13: यहां हम टाइप फाइल के साथ गुरु_फाइल तत्व को निर्दिष्ट कर रहे हैं और 50 का आकार दे रहे हैं।

कोड लाइन 15: यह एक सबमिट प्रकार बटन है, जिस पर "अपलोड" नाम है, जिसके माध्यम से कार्रवाई सर्वलेट को कॉल किया जाएगा और अनुरोध उस पर संसाधित किया जाएगा और फ़ाइल को सर्वलेट में पढ़ा और लिखा जाएगा।

गुरु_उप लोड.जाव

पैकेज डिमोटेस्ट;आयात java.io.File;आयात java.io.IOException;आयात java.util.ist;आयात javax.servlet.ServletException;आयात javax.servlet.http.HttpServlet;आयात javax.servlet.http.HttpServletRequest;आयात javax.servlet.http.HttpServletResponse;आयात org.apache.commons.fileupload.FileItem;आयात org.apache.commons.fileupload.disk.DiskFileItemFactory;आयात org.apache.commons.fileupload.servlet.ServletFileUpload;सार्वजनिक वर्ग गुरु_उप लोड HttpServlet {निजी स्थिर अंतिम लंबा सीरियलवर्जनयूआईडी = 1 एल;सार्वजनिक गुरु_भार () {सुपर();// TODO ऑटो-जनरेट कंस्ट्रक्टर स्टब}संरक्षित शून्य doPost (HttpServletRequest अनुरोध, HttpServletResponse प्रतिसाद) ServletException, IOException {फेंकता हैअगर (ServletFileUpload.isMultipartContent (अनुरोध)) {प्रयत्न {सूचीबद्ध करेंके लिए (फ़ाइल आइटम: मल्टीपार्ट्स) {अगर (आइटम .isFormField ()) {स्ट्रिंग नाम = नई फ़ाइल (item.getName ())। GetName ();item.write (नई फ़ाइल ("c: / guru / upload" + File.separator + name));}}//फ़ाइल सफलतापूर्वक अपलोड की गईrequest.setAttribute ("गुरुमेज़", "फ़ाइल अपलोड सफलतापूर्वक");} पकड़ (अपवाद पूर्व) {request.setAttribute ("gurumessage", "फाइल अपलोड विफल" "पूर्व" के कारण;}}अन्य{अनुरोध।}request.getRequestDispatcher ("/ result.jsp")। फ़ॉरवर्ड (अनुरोध, प्रतिक्रिया);}}

कोड की व्याख्या:

कोड लाइन 12-14: यहां हमें कोड के कॉन्फ़िगरेशन में org.apache.commons लाइब्रेरी को आयात करना होगा। हमें org.apache.commons लाइब्रेरी से फाइलअप लोड क्लास आयात करना होगा।

कोड लाइन 23: यहां हमारे पास doPost () विधि है, जिसे हम JSP में POST विधि के रूप में पास करेंगे, और यह वस्तुओं को इसके मापदंडों के रूप में अनुरोध और प्रतिक्रिया देगा।

कोड लाइन 26: यहां हम org.apache.commons लाइब्रेरी से fileUpload पैकेज से ServletFileUpload क्लास का ऑब्जेक्ट बना रहे हैं, जो यह जाँच करेगा कि क्या JSP में कोई फ़ाइल ऑब्जेक्ट हैं। यदि कोई पाया जाता है तो उन फ़ाइल ऑब्जेक्ट को अनुरोध से लिया जाएगा।

कोड लाइन 27-32: हम कई फ़ाइल आइटम मल्टीपर्ट ऑब्जेक्ट में मौजूद हैं, जो कि एक सूची ऑब्जेक्ट (यदि हम एक से अधिक फ़ाइल अपलोड करते हैं) और इसे c: / गुरु / अपलोड फ़ोल्डर में सहेजते हैं, तो यह जाँच कर फ़ाइलों की संख्या को बढ़ाएँगे। फ़ाइल नाम जो प्रदान किया गया है। हम उस फ़ोल्डर में फ़ाइलबॉजेक्ट के लेखन विधि का उपयोग करके फ़ाइल लिख रहे हैं जिसका उल्लेख किया गया है।

कोड लाइन 34: यदि कोई अपवाद नहीं है, तो हम अनुरोध में विशेषता निर्धारित कर रहे हैं मान के रूप में गुरुमेज़ेज "फ़ाइल सफलतापूर्वक अपलोड"।

कोड लाइन 35-36: यदि अपवाद होता है तो संदेश सेट करना कि "फ़ाइल अपलोड विफल"

कोड लाइन 40: यदि फ़ाइल नहीं मिली तो संदेश को "कोई फ़ाइल नहीं मिली" के रूप में सेट करना

कोड पंक्ति 42: अनुरोध और प्रतिक्रिया वस्तुओं के साथ result.jsp के लिए requestdispatcher ऑब्जेक्ट का उपयोग करके अग्रेषण अनुरोध।

परिणाम। Jsp

<% @ पृष्ठ भाषा = "जावा" सामग्रीpageEncoding = "ISO-8859-1"%><सिर><मेटा http-equiv = "सामग्री-प्रकार" सामग्री = "पाठ / html; चारसेट = ISO-8859-1"><शीर्षक> गुरु परिणाम <शरीर><% स्ट्रिंग संदेश = (स्ट्रिंग) request.getAttribute ("संदेश");out.println (msg);%>

कोड की व्याख्या:

कोड लाइन 10: यहाँ हमें एक स्ट्रिंग ऑब्जेक्ट में मूल्य गुरुमेसेज के साथ अनुरोध ऑब्जेक्ट से विशेषता मिल रही है।

कोड लाइन 11: यहां हम उस संदेश को प्रिंट कर रहे हैं।

जब हम उपरोक्त कोड निष्पादित करते हैं तो हमें निम्नलिखित आउटपुट मिलते हैं

आउटपुट:

हमें एक फॉर्म मिलता है, जिसमें डायरेक्टरी से फाइल चुनने के लिए फील्ड होते हैं। एक बार फाइल सलेक्ट होने के बाद हमें अपलोड बटन पर क्लिक करना होगा।

अपलोड बटन पर क्लिक करने के बाद हमें वह संदेश मिलता है जो फ़ाइल सफलतापूर्वक अपलोड किया जाता है।

नीचे दिए गए आरेख में हम देख सकते हैं कि फ़ाइल को c: / गुरु / अपलोड फ़ोल्डर में अपलोड किया गया था।

डाउनलोडिंग फ़ाइल:

इस उदाहरण में, हम बटन पर क्लिक करके एक निर्देशिका से एक फ़ाइल डाउनलोड करने जा रहे हैं।

Downloading_1.jsp

<% @ पृष्ठ भाषा = "जावा" सामग्रीpageEncoding = "ISO-8859-1"%><सिर><मेटा http-equiv = "सामग्री-प्रकार" सामग्री = "पाठ / html; चारसेट = ISO-8859-1"><शीर्षक> गुरु उदाहरण डाउनलोड करना <शरीर>गुरु डाउनलोडिंग फ़ाइल  यहां डाउनलोड करें !!! 

कोड की व्याख्या:

कोड लाइन 10: यहां हमने फ़ोल्डर से फाइल डाउनलोड करने के लिए लिंक दिया है c: / guru / upload सर्वलेट गुरु_डाउनलोड का उपयोग करके।

गुरु_दो.जावा

पैकेज डिमोटेस्ट;आयात java.io.FileInputStream;आयात java.io.IOException;आयात java.io.PrintWriter;आयात javax.servlet.ServletException;आयात javax.servlet.http.HttpServlet;आयात javax.servlet.http.HttpServletRequest;आयात javax.servlet.http.HttpServletResponse;/ *** सर्वलेट इम्प्लीमेंटेशन क्लास गुरु_डाउनलोड* /सार्वजनिक वर्ग गुरु_डाउनलोड HttpServlet {निजी स्थिर अंतिम लंबा सीरियलवर्जनयूआईडी = 1 एल;संरक्षित शून्य doGet (HttpServletRequest अनुरोध, HttpServletResponse प्रतिक्रिया) सर्वलेट अपवाद, IOException {response.setContentType ("टेक्स्ट / html");PrintWriter बाहर = response.getWriter ();स्ट्रिंग gurufile = "test.txt";स्ट्रिंग गुरूपथ = "ग: / गुरु / अपलोड /";response.setContentType ("APPLICATION / OCTET-STREAM");response.setHeader ("सामग्री-विवाद", "अनुलग्नक; फ़ाइल नाम = \" "+ गुरुफल + "\" ");FileInputStream fileInputStream = नया FileInputStream (गुरुपथ)+ गुरुफल);int i;जबकि ((i = fileInputStream.read) ()! = -1) {out.write (i);}fileInputStream.close ();out.close ();}/ *** @ HttpServlet # doPost (HttpServletRequest अनुरोध, HttpServletResponse प्रतिसाद)* /संरक्षित शून्य doPost (HttpServletRequest अनुरोध, HttpServletResponse प्रतिसाद) ServletException, IOException {फेंकता है// TODO ऑटो-जनरेट विधि ठूंठ}}

कोड की व्याख्या:

कोड लाइन 3-5: यहां हम java.io पैकेज से FileInputStream, IO Exception और PrintWriter आयात कर रहे हैं।

कोड लाइन 15: हम गुरु_डाउट सर्वलेट को परिभाषित कर रहे हैं जो कि HttpServlet का विस्तार करता है।

कोड लाइन 18: जैसा कि हमने एक href परिभाषित किया है, जो URL में संलग्न होगा इसलिए GET विधि संसाधित हो जाएगी (doGet को सर्वलेट में कहा जाएगा) जो अनुरोध और प्रतिक्रिया ऑब्जेक्ट्स को भी संलग्न करती है।

कोड लाइन 19-20: हम कंटेंट टाइप को रिस्पॉन्स ऑब्जेक्ट में सेट कर रहे हैं और रिस्पॉन्स से राइटर ऑब्जेक्ट भी प्राप्त कर रहे हैं।

कोड लाइन 21-22: मान चरखी के रूप में एक चर को परिभाषित करना।

कोड लाइन 23-25: हम प्रतिक्रिया ऑब्जेक्ट का उपयोग करके सामग्री प्रकार सेट कर रहे हैं और हम सेटहेडर पद्धति का उपयोग करते हैं जो हेडर को प्रतिक्रिया ऑब्जेक्ट में फ़ाइल नाम के रूप में सेट करता है जिसे अपलोड किया गया है।

कोड लाइन 27-28: हम FileInputStream बना रहे हैं जिसमें हम gurupath + gurufile जोड़ेंगे।

कोड लाइन 31-33: यहां हमने थोड़ी देर का लूप लिया है, जो फाइल के पढ़ने तक चलेगा, इसलिए हमने इस तरह की शर्त दी है! = -1। इस हालत में हम प्रिंट राइटर ऑब्जेक्ट आउट का उपयोग करके लिख रहे हैं।

जब आप उपरोक्त कोड निष्पादित करते हैं तो आपको निम्न आउटपुट मिलेगा

आउटपुट:

आउटपुट:

हमें download_1 पर क्लिक करना होगा। जेस्प हमें "डाउनलोड हियर" के रूप में हाइपरलिंक मिलेगा। जब आप इस हाइपरलिंक फ़ाइल पर क्लिक करते हैं, तो यह सिस्टम में डाउनलोड हो जाएगा।

सारांश:

  • हमने किसी भी आवेदन में पंजीकरण के लिए पंजीकरण फॉर्म के बारे में सीखा है
  • लॉग इन और लॉगआउट फ़ॉर्म कैसे काम करता है, इसके बारे में अधिक जानें।
  • जेएसपी के माध्यम से एक फ़ाइल को अपलोड करने और डाउनलोड करने के बारे में भी सीखा।