Galera, boa noite.
Vi alguns exemplos na internet de upload de arquivos com JSP, porém, não obtive sucesso ao implementar.
Quando vou inserir um cliente e seleciono meu arquivo para upload, no caso uma imagem, no Servlet não entra no IF:
if(ServletFileUpload.isMultipartContent(req))
Alguém saberia o porque ou tem algum exemplo bacana de upload com JSP?
Abaixo minha classe .JSP e meu Servlet. Usei a estrutura do projeto apresentado no curso de JSP do Alura.
JSP:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
<h2>Inserir Novo Cliente:</h2>
<form action="executar" method="POST">
<input type="hidden" name="tarefa" value="NovoCliente">
Nome: <input type="text" name="nome">
Documento: <input type="text" name="documento">
Tipo Cliente:
<select name="tipo">
<c:forEach var="t" items="${tiposCliente}">
<option value="${t}">${t} </option>
</c:forEach>
</select>
Avatar: <input name="avatar" type="file">
<input type="submit" value="Enviar">
</form>
<br><br>
<c:url value="/index.jsp" var="urlIndex"/>
<a href="${urlIndex}">Voltar a pagina principal</a>
</body>
</html>
Servlet:
package br.com.bariotti.cadastroclienteweb.web;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import br.com.bariotti.cadastroclienteweb.controller.ClienteController;
import br.com.bariotti.cadastroclienteweb.enums.TIPO_CLIENTE;
import br.com.bariotti.cadastroclienteweb.interfaces.Tarefa;
import br.com.bariotti.cadastroclienteweb.model.Cliente;
@MultipartConfig(fileSizeThreshold = 1024 * 1024, maxFileSize = 1024 * 1024 * 5, maxRequestSize = 1024 * 1024 * 5 * 5)
public class NovoCliente implements Tarefa {
public String executa(HttpServletRequest req, HttpServletResponse resp) throws Exception {
String nome = req.getParameter("nome");
String documento = req.getParameter("documento");
String tipoClienteAux = req.getParameter("tipo");
TIPO_CLIENTE tipoCliente;
if(tipoClienteAux.equals(TIPO_CLIENTE.PESSOA_FISICA.toString()))
tipoCliente = TIPO_CLIENTE.PESSOA_FISICA;
else
tipoCliente = TIPO_CLIENTE.PESSOA_JURIDICA;
Cliente cliente = new Cliente(nome, documento, tipoCliente);
ClienteController.inserirCliente(cliente);
if(ServletFileUpload.isMultipartContent(req))
{
try
{
List<FileItem> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(req);
for(FileItem item : multiparts){
if(!item.isFormField()){
String name = new File(item.getName()).getName();
item.write( new File(req.getServletContext().getRealPath("/resources/imagens") + File.separator + name));
}
}
System.out.println("SUCESSO ao realizar o upload do arquivo ");
}
catch(Exception ex)
{
System.out.println("Erro ao gravar arquivo. ERRO:" + ex.getMessage());
}
}
else
System.out.println("ELSE");
return "/WEB-INF/novoCliente.jsp";
}
}