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);
Author by
Greener
Updated on June 04, 2022Comments
-
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 almost 15 yearsAlso, note that DiskFileUpload is deprecated and you should be using ServletFileUpload (or PortletFileUpload).