Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Problems with Apache Commons FileUpload

843842May 4 2008 — edited May 6 2008
I'm completely stymied here. I've been trying to get the Apache Commons FileUpload working with a JBoss 4.2 server, and having no luck whatsoever. The servlet is listed out here:
package com.areteinc.servlets;

import java.io.IOException;
import java.io.PrintWriter;

import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
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.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;

public class Filer extends HttpServlet {
	
	private Logger logger = Logger.getLogger(Filer.class);
	
	public Filer() {
		logger.setLevel(Level.DEBUG);
	}
	
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		logger.debug("Serving up a GET page...");
		PrintWriter writer = resp.getWriter();
		StringBuffer response = new StringBuffer();
		response.append("<HTML><HEAD><TITLE>JENA File Uploader</TITLE></HEAD><BODY>");
		response.append("<FORM action=\"Filer\" method=\"POST\" enctype=\"multipart/form-data\">");
		response.append("Upload file: <input type=\"file\" name=\"file1\"/><br>");
		response.append("Upload file: <input type=\"file\" name=\"file2\"/><br>");
		response.append("<input type=submit value=\"Start upload\">");
		response.append("</BODY>");
		writer.println(response);
	}
	
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// First see if someone is uploading more than one file at a time...
		boolean isMultipart = ServletFileUpload.isMultipartContent(req);
		
		logger.debug("Received a POST request.  Multipart is flagged as " + isMultipart);
		
		// Create a factory for disk-based file items
		FileItemFactory factory = new DiskFileItemFactory();

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

		// Parse the request
		try {
			List<FileItem> items = upload.parseRequest(req);
			Iterator itr = items.iterator();
			logger.debug("Size of upload is " + items.size() + " items.");
			while(itr.hasNext()) {
				FileItem item = (FileItem) itr.next();
				logger.debug("Filename is " + item.getName());
			}
		} catch (FileUploadException e) {
			e.printStackTrace();
		}
	}
}
When run, I hit it with a get operation, and get the form. When I put in 2 forms (in reality, all i want to do is use one, but I'm tinkering), I see nothing in items list...

-----------
Run, with 2 files selected to upload:
13:50:15,421 DEBUG [Filer] Received a POST request. Multipart is flagged as true
13:50:15,421 DEBUG [Filer] Size of upload is 0 items.

I've tried variation after variation after variation, and it jst doesn't work. I'm using commons-fileupload-1.2.1.

Help! :)
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jun 3 2008
Added on May 4 2008
4 comments
1,044 views