I'm trying to develop a Java web application wherein I need to upload files into the server. I am using Xampp tomcat server which is integrated into eclipse application. Upon selecting the file to upload, I'm getting File Upload failed status message in the next page. This is my code
fileUpload.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>FileUpload</title>
</head>
<body>
<form action="MsgProcessorServlet" method="post" enctype="multipart/form-data" id="uploadForm">
<input type="file" name="file"/>
<input type="hidden" name="formType" value="uploadXML"/>
</form>
<p>
<button type="submit" form="uploadForm" id="Upload">Upload</button>
</p>
</body>
</html>
MsgProcessorServlet.java
package com.servlet;
import java.io.IOException;
import java.util.List;
import java.io.File;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
* Servlet implementation class MsgProcessorServlet
*/
@WebServlet("/MsgProcessorServlet")
@MultipartConfig
public class MsgProcessorServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public MsgProcessorServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println(request.getParameter("formType"));
if(request.getParameter("formType").equals("buildNew")) {
request.setAttribute("message", "Files generated successfully");
RequestDispatcher req = request.getRequestDispatcher("buildNewResult.jsp");
req.forward(request, response);
}
else if(request.getParameter("formType").equals("uploadXML")) {
request.setAttribute("message", "File Upload failed");
if(ServletFileUpload.isMultipartContent(request)) {
System.out.println("came here1");
List<FileItem> multiparts = null;
try {
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
diskFileItemFactory.setSizeThreshold(5 * 1024 * 1024);
ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
servletFileUpload.setSizeMax(5 * 1024 * 1024);
multiparts = servletFileUpload.parseRequest(request);
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.print("multiParts size: ");
System.out.println(multiparts.size());
for(FileItem item : multiparts) {
System.out.println("came here2");
if(!item.isFormField()) {
String fileName = new File(item.getName()).getName();
System.out.println(fileName);
try {
request.setAttribute("message", "File Uploaded successfully");
item.write(new File("./" + fileName));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
RequestDispatcher req = request.getRequestDispatcher("fileUploadResult.jsp");
req.forward(request, response);
}
}
}
The multipleParts list of type FileItem is not getting populated upon calling parseRequest method of ServletFileUpload.