Prezados,
Estou tentando fazer upload de imagem, copiar para um diretório e salvar o path no banco, mas quando submeto o form aparece a msg abaixo:
O que pode ser?
HTTP Status 404 - /projeto/jsp/produto/servletupload
--------------------------------------------------------------------------------
type Status report
message /projeto/jsp/produto/servletupload
description The requested resource (/abrasivosrecreio/jsp/produto/servletupload) is not available.
upload.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<form id="formImagem" name="formImagem" method="post" action="servletupload" 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>
ServletUpload.java
package upload;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
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 javax.swing.ImageIcon;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import br.com.abrasivosrecreio.jdbc.ConnectionFactory;
public class ServletUpload extends HttpServlet{
private static final long serialVersionUID = 1L;
public void init() throws ServletException {
}
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
//Process the HTTP Get request
public void doGet(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);
}
}
}
}
catch (FileUploadException ex) {
ex.printStackTrace();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
private void inserirImagemDiretorio(FileItem item) throws IOException, SQLException {
//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();
//Guarda no banco de dados o endereço para recuperação da imagem
Connection conn = ConnectionFactory.getConnection();
PreparedStatement pstmt = null;
int resultado = 0;
//Connection conexao = null;
//PreparedStatement declaracao = null;
String sql = "INSERT INTO tabelateste (codigo, imagem) VALUES(?, ?)";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 1); // codigo 1
pstmt.setString(2, caminho);
resultado = pstmt.executeUpdate();
} catch (SQLException sqlEx) {
Throwable ex = null;
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public ImageIcon recuperaImagemDiretorio() throws SQLException {
Connection conn = ConnectionFactory.getConnection();
Statement declaracao = null;
ResultSet resultado = null;
StringBuffer sql = new StringBuffer();
sql.append("SELECT imagem FROM tabelateste WHERE codigo = 1");
ImageIcon imagem = null;
try {
declaracao = (Statement) conn.createStatement();
resultado = declaracao.executeQuery(sql.toString());
if (resultado.next()) {
String caminhoImagem = resultado.getString("imagem");
if (caminhoImagem!=null){
imagem = new ImageIcon(caminhoImagem);
}
}
} catch (SQLException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
return imagem;
}
}
Vlw amigos…