एक जेएसपी का उपयोग एचटीएमएल फॉर्म टैग के साथ किया जा सकता है ताकि उपयोगकर्ता सर्वर पर फाइल अपलोड कर सकें। अपलोड की गई फ़ाइल टेक्स्ट फ़ाइल या बाइनरी या छवि फ़ाइल या कोई भी दस्तावेज़ हो सकती है।
फ़ाइल अपलोड फ़ॉर्म बनाना
आइए अब समझते हैं कि फाइल अपलोड फॉर्म कैसे बनाया जाता है। निम्न HTML कोड एक अपलोडर प्रपत्र बनाता है। ध्यान देने योग्य महत्वपूर्ण बिंदु निम्नलिखित हैं -
-
फ़ॉर्म विधि विशेषता को POST . पर सेट किया जाना चाहिए विधि और GET पद्धति का उपयोग नहीं किया जा सकता है।
-
फ़ॉर्म एन्टाइप विशेषता को मल्टीपार्ट/फॉर्म-डेटा पर सेट किया जाना चाहिए ।
-
फ़ॉर्म कार्रवाई विशेषता को जेएसपी फ़ाइल पर सेट किया जाना चाहिए जो बैकएंड सर्वर पर फ़ाइल अपलोडिंग को संभालेगा। निम्न उदाहरण uploadFile.jsp का उपयोग कर रहा है फ़ाइल अपलोड करने के लिए प्रोग्राम फ़ाइल।
-
एकल फ़ाइल अपलोड करने के लिए आपको एकल <इनपुट .../> . का उपयोग करना चाहिए विशेषता के साथ टैग प्रकार ="फ़ाइल" . एकाधिक फ़ाइलों को अपलोड करने की अनुमति देने के लिए, नाम विशेषता के लिए अलग-अलग मानों वाले एक से अधिक इनपुट टैग शामिल करें। ब्राउज़र उनमें से प्रत्येक के साथ एक ब्राउज़ बटन को संबद्ध करता है।
उदाहरण
<शीर्षक>फ़ाइल अपलोड करने का फ़ॉर्मशीर्षक>फ़ाइल अपलोड:
अपलोड करने के लिए एक फ़ाइल का चयन करें:
यह निम्नलिखित परिणाम प्रदर्शित करेगा। अब आप स्थानीय पीसी से एक फाइल का चयन कर सकते हैं और जब उपयोगकर्ता "अपलोड फाइल" पर क्लिक करता है, तो फॉर्म चयनित फाइल के साथ जमा हो जाता है -
आउटपुट
फ़ाइल अपलोडअपलोड करने के लिए फ़ाइल का चयन करें
नोट -उपरोक्त फॉर्म सिर्फ डमी फॉर्म है और काम नहीं करेगा, आपको इसे काम करने के लिए अपनी मशीन पर उपरोक्त कोड का प्रयास करना चाहिए।
बैकएंड JSP स्क्रिप्ट लिखना
आइए अब हम उस स्थान को परिभाषित करते हैं जहां अपलोड की गई फ़ाइलें संग्रहीत की जाएंगी। आप इसे अपने प्रोग्राम में हार्ड कोड कर सकते हैं या इस निर्देशिका नाम को बाहरी कॉन्फ़िगरेशन जैसे संदर्भ-परम का उपयोग करके भी जोड़ा जा सकता है web.xml में तत्व इस प्रकार है -
.... <संदर्भ-परम> <विवरण> अपलोड की गई फ़ाइल को संग्रहीत करने का स्थान फ़ाइल-अपलोड c:\apache-tomcat-5.5.29\webapps\data\ ....
UploadFile.jsp के लिए स्रोत कोड निम्नलिखित है:. यह एक बार में कई फाइलों को अपलोड करने का काम संभाल सकता है। आइए अब फाइलों को अपलोड करने के साथ आगे बढ़ने से पहले निम्नलिखित पर विचार करें।
-
निम्न उदाहरण फ़ाइल अपलोड पर निर्भर करता है; सुनिश्चित करें कि आपके पास commons-fileupload.x.x.jar . का नवीनतम संस्करण है अपने क्लासपाथ में फ़ाइल करें। आप इसे https://commons.apache.org/fileupload/ से डाउनलोड कर सकते हैं।
-
फाइलअपलोड कॉमन्स आईओ पर निर्भर करता है; सुनिश्चित करें कि आपके पास commons-io-x.x.jar . का नवीनतम संस्करण है अपने क्लासपाथ में फ़ाइल करें। आप इसे https://commons.apache.org/io/ से डाउनलोड कर सकते हैं।
-
निम्नलिखित उदाहरण का परीक्षण करते समय, आपको एक फ़ाइल अपलोड करनी चाहिए जो कि maxFileSize . से कम आकार की हो अन्यथा फ़ाइल अपलोड नहीं की जाएगी।
-
सुनिश्चित करें कि आपने निर्देशिकाएं बनाई हैं c:\temp और c:\apache-tomcat5.5.29\webapps\data बहुत पहले से।
<%@ पृष्ठ आयात ="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.*" %><% फ़ाइल फ़ाइल; इंट मैक्सफाइलसाइज =5000 * 1024; int maxMemSize =5000 * 1024; ServletContext प्रसंग =pageContext.getServletContext (); स्ट्रिंग फ़ाइलपाथ =संदर्भ। getInitParameter ("फ़ाइल-अपलोड"); // सामग्री प्रकार सत्यापित करें स्ट्रिंग सामग्री टाइप =request.getContentType (); अगर ((contentType.indexOf ("मल्टीपार्ट/फॉर्म-डेटा")> =0)) {DiskFileItemFactory factory =new DiskFileItemFactory (); // अधिकतम आकार जो मेमोरी फैक्ट्री में स्टोर किया जाएगा। सेटसाइज थ्रेशोल्ड (मैक्समेम साइज); // डेटा को बचाने के लिए स्थान जो maxMemSize से बड़ा है। Factory.setRepository (नई फ़ाइल ("सी:\\ अस्थायी")); // एक नई फ़ाइल अपलोड हैंडलर बनाएँ ServletFileUpload अपलोड =नया ServletFileUpload (कारखाना); // अधिकतम फ़ाइल आकार अपलोड किया जाना है। upload.setSizeMax (maxFileSize); कोशिश करें {// फ़ाइल आइटम प्राप्त करने के अनुरोध को पार्स करें। सूची fileItems =upload.parseRequest (अनुरोध); // अपलोड की गई फ़ाइल आइटम को संसाधित करें Iterator i =fileItems.iterator (); out.println (""); out.println ("<सिर>"); out.println ("<शीर्षक>जेएसपी फ़ाइल अपलोडशीर्षक>"); out.println (""); out.println ("<बॉडी>"); जबकि (i.hasNext ()) { FileItem fi =(FileItem)i.next (); अगर (!fi.isFormField ()) {// अपलोड की गई फ़ाइल पैरामीटर प्राप्त करें स्ट्रिंग फ़ील्डनाम =fi.getFieldName (); स्ट्रिंग फ़ाइल नाम =fi.getName (); बूलियन isInMemory =fi.isInMemory (); लंबा आकारइनबाइट्स =fi.getSize (); // फ़ाइल लिखें if(fileName.lastIndexOf("\\")>=0) { file =new File(filePath + fileName.substring(fileName.lastIndexOf("\\"))); } और {फ़ाइल =नई फ़ाइल (filePath + fileName.substring(fileName.lastIndexOf("\\")+1)); } फाई.लिखें (फ़ाइल); out.println ("अपलोड किया गया फ़ाइल नाम:" + फ़ाइलपाथ + फ़ाइल नाम + "
"); } } out.println ("