/ W3SCHOOLS

W3schools - JSP_File Upload

이 페이지는 다음에 대한 공부 기록입니다
Lecture에서 배웠던 내용을 복습하며 작성했습니다

찾으시는 정보가 있으시다면
주제별reference를 이용하시거나
우측 상단에 있는 검색기능을 이용해주세요

File Uploading

Important points

The form method attribute should be set to POST method and GET method can’t be used

The form enctype attribute should be set to multipart/form-data

The form action attribute should be set to a JSP file which would handle file uploading at backend server

To upload single file, should use a single input tag with attribute type= “file”

To upload multiple files, include more than one input tag with different values for the name attribute

Writing Backend

Define a location where the uploaded files will be stored

Add directory name using an external configuration such as a context-param element in web-xml

<web-app>
<context-param>
    <description>Location to store uploaded file</description>
    <param-name>file-upload</param-name>
    <param-value>
        \user\directory\
    </param-value>
</context-param>
</web-app>

In jsp

  1. Make sure you have the latest version of commons-fileupload.x.x.jar file in your classpath

  2. FileUpload depends on Commons IO; make sure you have the latest version of commons-io-x.x.jar file in your classpath

  3. Should upload a file which is of less size than maxFileSize otherwise the file will not uploaded

<%@ 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");

    // Verify the content type
    String contentType = request.getContentType();
    
    if ((contentType.indexOf("multipart/form-data") >= 0)) {
        DiskFileItemFactory factory = new DiskFileItemFactory();
        // maximum size that will be stored in memory
        factory.setSizeThreshold(maxMemSize);
    
        // Location to save data that is larger than maxMemSize.
        factory.setRepository(new File("c:\\temp"));
    
        // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(factory);
          
        // maximum file size to be uploaded.
        upload.setSizeMax( maxFileSize );
          
        try { 
            // Parse the request to get file items.
            List fileItems = upload.parseRequest(request);
    
            // Process the uploaded file items
            Iterator i = fileItems.iterator();
    
            out.println("<html>");
            out.println("<head>");
            out.println("<title>JSP File upload</title>");  
            out.println("</head>");
            out.println("<body>");
             
            while ( i.hasNext () ) {
                FileItem fi = (FileItem)i.next();
                if ( !fi.isFormField () ) {
                    // Get the uploaded file parameters
                    String fieldName = fi.getFieldName();
                    String fileName = fi.getName();
                    boolean isInMemory = fi.isInMemory();
                    long sizeInBytes = fi.getSize();
                
                    // Write the file
                    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>");
            out.println("</html>");
        } catch(Exception ex) {
            System.out.println(ex);
        }
    } else {
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet upload</title>");  
        out.println("</head>");
        out.println("<body>");
        out.println("<p>No file uploaded</p>");
        out.println("</body>");
        out.println("</html>");
    }
%>