Boa noite, estou tentando desenvolver um programa de upload de arquivos em MVC.
Mais estou com problema, quando tenta fazer upload de arquivos, dá erro na pagina [size=18] HTTP-404-/Prod/Controle[/size] e não grava no bando de dados…
estou passando meu código para alguem me ajudar???
Este é minha Controle
package Controle;
import Negocio.Teste;
import Negocio.TesteDao;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
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.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class Controle extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
boolean isMultiPart = FileUpload.isMultipartContent(request);
if (isMultiPart) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
String formulario = "";
try {
List items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.getFieldName().equals("tipoForm")) {
formulario = item.getString();
}
if (!item.isFormField()) {
if (item.getName().length() > 0) {
this.inserirImagemDiretorio(item);
System.out.println("Ok");
}
}
}
} catch (FileUploadException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
private void inserirImagemDiretorio(FileItem item) throws
IOException {
//Pega o diretório /logo dentro do diretório atual de onde a
//aplicação está rodando
String caminho = getServletContext().getRealPath("/logo")
+ "/";
// Cria o diretório caso ele não exista
File diretorio = new File(caminho);
if (!diretorio.exists()) {
diretorio.mkdir();
}
// Mandar o arquivo para o diretório informado
String nome = item.getName();
String arq[] = nome.split("\\\\");
for (int i = 0; i < arq.length; i++) {
nome = arq[i];
}
File file = new File(diretorio, nome);
FileOutputStream output = new FileOutputStream(file);
InputStream is = item.getInputStream();
byte[] buffer = new byte[2048];
int nLidos;
while ((nLidos = is.read(buffer)) >= 0) {
output.write(buffer, 0, nLidos);
}
output.flush();
output.close();
TesteDao tesDao = new TesteDao();
Teste teste = new Teste();
teste.setImagem(caminho);
tesDao.Cadastar(teste);
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
Regras de Negocios
package Negocio;
import java.sql.Connection;
import java.sql.PreparedStatement;
public class TesteDao {
public void Cadastar(Teste teste) {
Conexao con = new Conexao();
Connection conexao = con.getConexao();
try {
String sql = "INSERT INTO teste(imagem)values(?)";
PreparedStatement pstmt = conexao.prepareStatement(sql);
pstmt.setString(1, teste.getImagem());
pstmt.execute();
} catch (Exception e) {
e.printStackTrace();
System.out.println("Erro no sistema verificar as:" + e.getMessage());
}
}
}
package Negocio;
public class Teste {
private int codigo;
private String imagem;
public int getCodigo() {
return codigo;
}
public String getImagem() {
return imagem;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public void setImagem(String imagem) {
this.imagem = imagem;
}
}
Minha jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<form id="formImagem" name="formImagem" method="post" action="Controle" enctype="multipart/form-data">
<input type="hidden" id="tipoForm" name="tipoForm" value="imagem">
<input name="imagem" type="file" accept="image/jpeg; image/gif; image/bmp; image/png" id="imagem" class="dados" maxlength="60" tabindex="1" value="c:/" style="position:absolute; top:23px; left:12px; width:500px; "/>
<input type="submit" id="upload" name="upload" tabindex="2" style="position:absolute; top:20px; left:532px;" />
</form>
</body>
</html>