Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> प्रोग्रामिंग

JSP का उपयोग करके फ़ाइल कैसे अपलोड करें?

एक JSP का उपयोग HTML फॉर्म टैग के साथ उपयोगकर्ताओं को सर्वर पर फ़ाइलें अपलोड करने की अनुमति देने के लिए किया जा सकता है। एक अपलोड की गई फ़ाइल एक टेक्स्ट फ़ाइल, बाइनरी, इमेज फ़ाइल या कोई भी दस्तावेज़ हो सकती है।

फ़ाइल अपलोड फॉर्म बनाना

आइए अब समझते हैं कि फ़ाइल अपलोड फॉर्म कैसे बनाया जाता है। निम्न HTML कोड एक अपलोडर फॉर्म बनाता है। निम्नलिखित महत्वपूर्ण बिंदुओं पर ध्यान दें:

  • फॉर्म method एट्रिब्यूट को POST मेथड पर सेट किया जाना चाहिए और GET मेथड का उपयोग नहीं किया जा सकता।
  • फॉर्म enctype एट्रिब्यूट को multipart/form-data पर सेट किया जाना चाहिए।
  • फॉर्म action एट्रिब्यूट को एक JSP फ़ाइल पर सेट किया जाना चाहिए जो बैकएंड सर्वर पर फ़ाइल अपलोड को संभालेगा। निम्न उदाहरण uploadFile.jsp प्रोग्राम फ़ाइल का उपयोग फ़ाइल अपलोड करने के लिए कर रहा है।
  • एक फ़ाइल अपलोड करने के लिए आपको type="file" एट्रिब्यूट के साथ एकल <input .../> टैग का उपयोग करना चाहिए। एकाधिक फ़ाइलें अपलोड करने की अनुमति देने के लिए, नाम एट्रिब्यूट के लिए अलग-अलग मानों के साथ एक से अधिक इनपुट टैग शामिल करें। ब्राउज़र उनमें से प्रत्येक के साथ एक ब्राउज़ बटन जोड़ता है।

उदाहरण: अपलोड फॉर्म

<html>
<head>
    <title>File Uploading Form</title>
</head>
<body>
    <h3>File Upload:</h3>
    Select a file to upload: <br />
    <form action="UploadServlet" method="post" enctype="multipart/form-data">
        <input type="file" name="file" size="50" />
        <br />
        <input type="submit" value="Upload File" />
    </form>
</body>
</html>

यह निम्न परिणाम प्रदर्शित करेगा। अब आप स्थानीय PC से एक फ़ाइल चुन सकते हैं और जब उपयोगकर्ता "Upload File" पर क्लिक करता है, तो फॉर्म चयनित फ़ाइल के साथ सबमिट हो जाता है।

बैकएंड JSP स्क्रिप्ट लिखना

आइए अब एक स्थान परिभाषित करें जहां अपलोड की गई फ़ाइलें संग्रहीत की जाएंगी। आप इसे अपने प्रोग्राम में हार्डकोड कर सकते हैं या इस निर्देशिका नाम को web.xml में context-param एलिमेंट का उपयोग करके बाहरी कॉन्फ़िगरेशन के रूप में भी जोड़ा जा सकता है:

<web-app>
    ...
    <context-param>
        <description>Location to store uploaded file</description>
        <param-name>file-upload</param-name>
        <param-value>c:\apache-tomcat-5.5.29\webapps\data\</param-value>
    </context-param>
    ...
</web-app>

UploadFile.jsp (Apache Commons FileUpload का उपयोग करके)

<%@ page import="java.io.*,java.util.*, javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.fileupload.disk.*" %>
<%@ page import="org.apache.commons.fileupload.servlet.*" %>
<%@ page import="org.apache.commons.io.output.*" %>
<%
    File file;
    int maxFileSize = 5000 * 1024;
    int maxMemSize = 5000 * 1024;
    ServletContext context = pageContext.getServletContext();
    String filePath = context.getInitParameter("file-upload");
    
    // कंटेंट टाइप सत्यापित करें
    String contentType = request.getContentType();
    if ((contentType.indexOf("multipart/form-data") >= 0)) {
        DiskFileItemFactory factory = new DiskFileItemFactory();
        // अधिकतम आकार जो मेमोरी में संग्रहीत होगा
        factory.setSizeThreshold(maxMemSize);
        // डेटा सहेजने का स्थान जो maxMemSize से बड़ा है
        factory.setRepository(new File("c:\\temp"));
        // नया फ़ाइल अपलोड हैंडलर बनाएं
        ServletFileUpload upload = new ServletFileUpload(factory);
        // अपलोड की जाने वाली अधिकतम फ़ाइल आकार
        upload.setSizeMax(maxFileSize);
        
        try {
            // फ़ाइल आइटम्स प्राप्त करने के लिए रिक्वेस्ट पार्स करें
            List fileItems = upload.parseRequest(request);
            // अपलोड की गई फ़ाइल आइटम्स प्रोसेस करें
            Iterator i = fileItems.iterator();
            out.println("<html><head><title>JSP File upload</title></head><body>");
            
            while (i.hasNext()) {
                FileItem fi = (FileItem) i.next();
                if (!fi.isFormField()) {
                    // अपलोड की गई फ़ाइल पैरामीटर्स प्राप्त करें
                    String fieldName = fi.getFieldName();
                    String fileName = fi.getName();
                    boolean isInMemory = fi.isInMemory();
                    long sizeInBytes = fi.getSize();
                    
                    // फ़ाइल लिखें
                    if (fileName.lastIndexOf("\\") >= 0) {
                        file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\")));
                    } else {
                        file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\") + 1));
                    }
                    fi.write(file);
                    out.println("Uploaded Filename: " + filePath + fileName + "<br>");
                }
            }
            out.println("</body></html>");
        } catch (Exception ex) {
            System.out.println(ex);
        }
    } else {
        out.println("<html><head><title>Servlet upload</title></head><body>");
        out.println("<p>No file uploaded</p>");
        out.println("</body></html>");
    }
%>

पूर्वापेक्षाएँ

  • commons-fileupload-x.x.jar और commons-io-x.x.jar क्लासपथ में होना चाहिए।
  • निर्देशिकाएं c:\temp और c:\apache-tomcat-5.5.29\webapps\data पहले से मौजूद होनी चाहिए।
  • अपलोड की गई फ़ाइल का आकार maxFileSize से कम होना चाहिए।

परिणाम

यदि आपका JSP स्क्रिप्ट ठीक काम करता है, तो आपकी फ़ाइल c:\apache-tomcat-5.5.29\webapps\data\ निर्देशिका में अपलोड होनी चाहिए।

आधुनिक विकल्प (Servlet 3.0+)

Servlet 3.0+ @MultipartConfig एनोटेशन और request.getPart() के साथ अंतर्निहित मल्टीपार्ट समर्थन प्रदान करता है, जिससे बाहरी लाइब्रेरी की आवश्यकता समाप्त हो जाती है।

  1. JDBC का उपयोग करके डेटाबेस से फाइल कैसे पुनर्प्राप्त करें? JDBC का उपयोग करके डेटाबेस से फाइल कैसे पुनर्प्राप्त करें?

    ResultSet इंटरफ़ेस Clob डेटाटाइप को पुनर्प्राप्त करने के लिए getClob() और getCharacterStream() नामक मेथड प्रदान करता है, जिसमें आमतौर पर फाइल की सामग्री संग्रहीत होती है।ये मेथड कॉलम के इंडेक्स को दर्शाने वाला एक पूर्णांक (या, कॉलम के नाम को दर्शाने वाला एक स्ट्रिंग मान) स्वीकार करते हैं और निर्दिष्

  1. अब आप विंडोज 11 पर एंड्रॉइड ऐप्स आज़मा सकते हैं: यहां बताया गया है कैसे अब आप विंडोज 11 पर एंड्रॉइड ऐप्स आज़मा सकते हैं: यहां बताया गया है कैसे

    विंडोज 11 की बड़ी विशेषताओं में से एक एंड्रॉइड ऐप सपोर्ट है। जैसे विंडोज 10 ने प्रसिद्ध रूप से विंडोज सबसिस्टम फॉर लिनक्स पेश किया ताकि विंडोज कंप्यूटर्स को वास्तव में लिनक्स का उपयोग किए बिना लिनक्स प्रोग्राम चलाने का एक तरीका मिल सके, विंडोज 11 भी विंडोज सबसिस्टम फॉर एंड्रॉइड नामक किसी चीज़ का उपय

  1. एंड्रॉइड APK फाइल्स को सुरक्षित और कुशलता से आर्काइव कैसे करें एंड्रॉइड APK फाइल्स को सुरक्षित और कुशलता से आर्काइव कैसे करें

    एंड्रॉइड ऑपरेटिंग सिस्टम विंडोज, macOS और लिनक्स जैसे नियमित कंप्यूटर ऑपरेटिंग सिस्टम से काफी अलग है। सभी कंप्यूटर ऑपरेटिंग सिस्टम में एक इंस्टॉलेशन फाइल होती है जिसे निष्पादित करने पर, एप्लिकेशन आपके कंप्यूटर पर इंस्टॉल हो जाता है। इंस्टॉलेशन प्रक्रिया में विंडोज रजिस्ट्री में विवरण दर्ज करना, डेस्