package uplo;
import java.io.*;
import java.sql.*;
import com.mysql.jdbc.Blob;
import javax.swing.ImageIcon;
import javax.servlet.*;
import java.util.*;
import javax.servlet.http.*;
import org.apache.commons.io.*;
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 java.io.File;
import java.io.InputStream;
public class ServletUpload extends HttpServlet {
//Initialize global variables
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.inserirImagem(item);
}
}
}
} catch (FileUploadException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
/**
* @param item FileItem, representa um arquivo que é enviado pelo formulario
* MultiPart/Form-data
* @throws IOException
* @throws ServletException
*
*
*/
private void inserirImagem(FileItem item) {
Connection conexao = null;
String sql = "INSERT INTO TabelaTeste (codigo, imagem) VALUES(?, ?)";
PreparedStatement declaracao = null;
ResultSet resultado = null;
try {
declaracao = conexao.prepareStatement(sql);
declaracao.setInt(1, 1); // codigo 1
declaracao.setBinaryStream(2, item.getInputStream(), (int) item.getSize());
declaracao.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public ImageIcon recuperaImagem() {
Connection conexao = null;
/**
Estabeleça a conexão
*/
PreparedStatement declaracao = null;
ResultSet resultado = null;
StringBuffer sql = new StringBuffer();
sql.append("SELECT imagem FROM tabelaTeste WHERE codigo = 1");
ImageIcon imagem = null;
try {
declaracao = conexao.createStatement();
resultado = declaracao.executeQuery(sql.toString());
if (resultado.next()) {
Blob blob = (Blob) resultado.getBlob("imagem");
if (blob != null) {
imagem = new ImageIcon(blob.getBytes(1,
(int) blob.length()));
}
}
} catch (SQLException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
return imagem;
}
/**
*
* @param item FileItem, representa um arquivo que é enviado pelo formulario
* MultiPart/Form-data
* @throws IOException
*/
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();
//Guarda no banco de dados o endereço para recuperação da imagem
Connection conexao = null;
/**
Estabeleça a conexão
*/
PreparedStatement declaracao = null;
String sql = "INSERT INTO TabelaTeste2 (codigo, imagem) VALUES(?, ?) ";
try {
int resultado = 0;
declaracao = conexao.prepareStatement(sql);
declaracao.setInt(1, 1); // codigo 1
declaracao.setString(2, caminho);
resultado = declaracao.executeUpdate();
} catch (SQLException sqlEx) {
sqlEx.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public ImageIcon recuperaImagemDiretorio() {
Connection conexao = null;
/**
Estabeleça a conexao
*/
Statement declaracao = null;
ResultSet resultado = null;
StringBuffer sql = new StringBuffer();
sql.append("SELECT imagem FROM tabelaTeste2 WHERE codigo = 1");
ImageIcon imagem = null;
try {
declaracao = conexao.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;
}
}
Não estou conseguindo completar esta parte ...
a do PreparedStatement e a do Statement
/**
Estabeleça a conexão
*/
Cara perceba que no seu codigo vc declara a sua Connection como Null e não seta ela com um valor de cnexão vc apenas declara e depois tenta criar um creatStatement isso e impossivel deve informar o caminho do driver 1º
Connection conn = null;
Class.forName("caminhoDoDriver");
conn = DriverManager.getConnectin("localhost","user","password");
Tenta algo assim…
[color=red]C:\Documents and Settings\Metalvale\Meus documentos\NetBeansProjects\ROOT\src\java\uplo\ServletUpload.java:154: unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown
Class.forName(“org.gjt.mm.mysql.Driver”);
C:\Documents and Settings\Metalvale\Meus documentos\NetBeansProjects\ROOT\src\java\uplo\ServletUpload.java:155: unreported exception java.sql.SQLException; must be caught or declared to be thrown
conexao = DriverManager.getConnection(“jdbc:mysql://mysql.banco.com.br/banco”, “banco”, “senha banco”);
Note: C:\Documents and Settings\Metalvale\Meus documentos\NetBeansProjects\ROOT\src\java\uplo\ServletUpload.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
2 errors
C:\Documents and Settings\Metalvale\Meus documentos\NetBeansProjects\ROOT\nbproject\build-impl.xml:336: The following error occurred while executing this line:
C:\Documents and Settings\Metalvale\Meus documentos\NetBeansProjects\ROOT\nbproject\build-impl.xml:167: Compile failed; see the compiler error output for details.
BUILD FAILED (total time: 0 seconds)[/color]
Esse é o Erro
Assim q eu digito isso ele sublinha com linha de erro.
Connection conn = null;
Class.forName(“caminhoDoDriver”);
conn = DriverManager.getConnectin(“localhost”,“user”,“password”);
cara vc tem que passar os parametros corretos o que eumandei e so um exemplo:
conexao = DriverManager.getConnection("jdbc:mysql://mysql.banco.com.br/banco", "banco", "senha banco");
no lugar de uma string banco e uma string senha banco te que ir od dados corretos de acordo com o que vc configurou…os seus dados no banco de dados.
isso eu sei… o problema é q qdo digito isso ele num reconhece … e sublinha a linha , estou usando netbeans
[color=red]
Erro:
unreported exception java.lang.ClassNotFoundException;must be caught or declared to be thrown[/color]
ah msm coisa… q será q tah acontecendo ? vlw por estarem me ajudando
Erro:
unreported exception java.lang.ClassNotFoundException;must be caught or declared to be thrown
vc incluiu no seu build o seu drive de comunicação?
sim…pq nas outras paginas da Mesma aplicação ele funciona … e aqui não quer funcionar
o erro de classnotfound significa que nao foi encontrado alguma classe e concerteza deve ser a classe Driver Class.forName(“blablabla.Driver”);