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! :)