Java: Jakarta Apache Commons FileUpload

After headaches, 7 coffee, 1 Cheese Burger and 7 hours of sleep. I finally got Apache Commons FileUpload to work! : )

My working environment: JDeveloper 10g, Tomcat 5.x and Oracle DB 10g, Apache Commons Lib

The working code:

public void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {

// Check that we have a file upload request
boolean isMultipart = ServletFileUpload.isMultipartContent(request);

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

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

try {

// Parse the request
List items = upload.parseRequest(request);

// Process the uploaded items
Iterator iter = items.iterator();

while (iter.hasNext()) {

FileItem item = (FileItem);
if (item.isFormField()) {

String name = item.getFieldName();
String value = item.getString();
if(name.equals(“username”)) {  username= value; }
if(name.equals(“pass”)) {  passwd=value;}
if(name.equals(“email”)) {  email=value;}

} else {

//Process the file upload

// *************************************************
// This is where you would process the uploaded file
// *************************************************
File uploadedFile = null;
String myFullFileName = fileItem.getName(), myFileName =
“”, slashType =
(myFullFileName.lastIndexOf(“\\”) > 0) ? “\\” : “/”;
int startIndex = myFullFileName.lastIndexOf(slashType);
myFileName =
myFullFileName.substring(startIndex + 1, myFullFileName.length());

uploadedFile =
new File(“/home/gulshanbeejan/uploads”,



//Do stuff with fields collected here.. like save in a db?

} catch (Exception e) {

enctype=”multipart/form-data” will only work that way, you cannot use a multipart/form-data and use request.getParameter(“username”); it will never work.

I hope this helps other souls!

Gulshan Yashveer Beejan

Gulshan holds a BSc(Hons) Computer Science with Distributed systems from the City University of London. He is currently working at DSOGroup(Mauritius) as a Linux Administrator on SaaS Solutions. More about Gulshan

Leave a Reply

Your email address will not be published. Required fields are marked *