Olá estou tentando fazer um upload de arquivo usando jakarta Commons FileUpload 1.2. Já adicionei esse pacote dentro de WEB-INF/lib porém dá um erro que não consigo explicar.
Primeira vez que posto no GUJ espero ser bem recebido :D
Vamos aos códigos
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
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;
public class UploadServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet
{
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
DiskFileItemFactory factory = new DiskFileItemFactory();
// maximum size that will be stored in memory
factory.setSizeThreshold(4096);
// the location for saving data that is larger than getSizeThreshold()
factory.setRepository(new File("/tmp"));
ServletFileUpload upload = new ServletFileUpload(factory);
// maximum size before a FileUploadException will be thrown
upload.setSizeMax(1000000);
List fileItems;
try
{
fileItems = upload.parseRequest(request);
Iterator i = fileItems.iterator();
String comment = ((FileItem)i.next()).getString();
FileItem fi = (FileItem)i.next();
// filename on the client
String fileName = fi.getName();
// save comment and filename to database
// write the file
fi.write(new File("/data/", fileName));
} catch (FileUploadException e)
{
e.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
O jsp que envia para esse servlet é:
<form action="/upload" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>Selecione uma imagem para fazer o upload: <input type="file" name="filename"> <input type="submit" value="upload"></td>
</tr>
</table>
</form>
o erro que acontece é esse
SEVERE: Servlet.service() for servlet UploadServlet threw exception
java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
exatamente quando ele tenta executar
fileItems = upload.parseRequest(request);
