upload file in JSP - how to change a default path for the uploaded file

19,006

Use the following code (adapted for the user guide):

// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(dir);

// Create a new file upload handler
DiskFileUpload upload = new DiskFileUpload(factory);

// Parse the request
List /* FileItem */ items = upload.parseRequest(request);
Share:
19,006
Greener
Author by

Greener

Updated on June 04, 2022

Comments

  • Greener
    Greener almost 2 years

    I have two jps pages to handle an upload of the single file. Here is a code for selecting a file:

     org.apache.commons.io.FilenameUtils, java.util.*, 
     java.io.File, java.lang.Exception" %>
    ...
     <form name="uploadFile" method="POST" action="processUpload.jsp"     
     enctype="multipart/form-data">
         <input type="file" name="myfile"><br />
         <input type="submit" value="Submit" />
     </form>
     ....
    

    //--------handle uploaded file---------------------

    <%@ page contentType="text/html;charset=windows-1252"%>
    <%@ page import="org.apache.commons.fileupload.DiskFileUpload"%>
    <%@ page import="org.apache.commons.fileupload.FileItem"%>
    <%@ page import="java.util.List"%>
    <%@ page import="java.util.Iterator"%>
    <%@ page import="java.io.File"%>
    
    
    <%
        System.out.println("Content Type ="+request.getContentType());
        System.out.println("Cookies" + request.getCookies());
    
        DiskFileUpload fu = new DiskFileUpload();
        // If file size exceeds, a FileUploadException will be thrown
        fu.setSizeMax(1000000);
    
        List fileItems = fu.parseRequest(request);
        Iterator itr = fileItems.iterator();
    
        while(itr.hasNext()) {
          FileItem fi = (FileItem)itr.next();
    
          //Check if not form field so as to only handle the file inputs
          //else condition handles the submit button input
          if(!fi.isFormField()) {
            System.out.println("\nNAME: "+fi.getName());
            System.out.println("SIZE: "+fi.getSize());
            //System.out.println(fi.getOutputStream().toString());
            File fNew= new File(application.getRealPath("/"), fi.getName());
    
            System.out.println(fNew.getAbsolutePath());
            fi.write(fNew);
          }
          else {
            System.out.println("Field ="+fi.getFieldName());
          }
        }
     %>
    

    This code put a file into my build\web folder. How to set a path to a different directory on the server (assuming the write permissions are set) ? Thanks,

  • Powerlord
    Powerlord almost 15 years
    Also, note that DiskFileUpload is deprecated and you should be using ServletFileUpload (or PortletFileUpload).