Buenas senhores :D
Estou com um problema que está em tirando o sono...
Tenho uma pagina que vai fazer upload, meu form está assim:
<form action="<%=request.getContextPath() %>/ImagemServlet" method="post" enctype="multipart/form-data">
<input type="hidden" name="acao" value="upload"/>
Porém, na minha Servlet, ao tentar um request.getParameter("acao"), ele me retorna null. Ai que vem o bizarro... se eu tirar o enctype="multipart/form-data" e tentar novamente o request.getParameter("acao"), ele vai me trazer o valor "upload"!!!! Mas se eu deixar o form sem o enctype a servlet não consegue pegar o upload e me joga uma excessão!
org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is application/x-www-form-urlencoded
Ou seja, com o enctype="multipart/form-data" não consigo pegar os parametros do request, e se tirar ele eu consigo, alguem sabe oq pode ser? Ta me tirando o sono isso... :(
Essa é a minha Servlet:protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(request.getParameter("acao").equalsIgnoreCase("upload")){
try {
Imagem imagem = new Imagem();
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
//upload.setSizeMax(11111);
List items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) {
String fieldName = item.getFieldName();
String contentType = item.getContentType();
boolean isInMemory = item.isInMemory();
long sizeInBytes = item.getSize();
imagem.setNome(request.getParameter("nome"));
imagem.setDescricao(request.getParameter("descricao"));
imagem.setNomeArquivo(item.getName());
imagem.setDataCadastro(new Date());
File uploadedFile = new File("c:\\" + imagem.getNomeArquivo());
item.write(uploadedFile);
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}