Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pedroalves

[Resolvido] upload de imagem

Recommended Posts

tem que ficar assim

esta-me a dar erros

tenho que por importe o que

 

       String imagen="";
    imagen=String.valueOf(novoutilizador.getText());
       try {
String driverName = "org.gjt.mm.mysql.Driver";
Class.forName(driverName);
// Create a connection to the database
String id_BD = "gest";
String IP = "127.0.0.1";
String URL = "jdbc:mysql://" + IP + "/" + id_BD;
String username = "root";
String password = "123456";
conn = DriverManager.getConnection(URL, username, password);
} catch (ClassNotFoundException e) {
System.out.println("Erro no driver de ligação:"+e.getMessage());
} catch (SQLException e) {
System.out.println("Erro de SQL:"+e.getMessage());
}

       try{   

     Statement stmt = conn.createStatement();
   File arquivo = new File("logotipo");
   FileInputStream inputStream = new FileInputStream(arquivo);
String query="Insert into empresa (logotipo) VALUES('"+imagen+"');";
System.out.println(""+query);
int rest = stmt.executeUpdate(query); 
if (rest==0){
System.out.println("REst deu o");

}

  pstmt.setString(1,arquivo.getName());
   pstmt.setBinaryStream(2,inputStream,(int)arquivo.length());
   pstmt.executeUpdate();

   rest = pstmt.executeQuery();
   if( rest.next() ){
     Blob blob = rest.getBlob(1);
     ImageIcon imageIcon = new ImageIcon(blob.getBytes(1, (int)blob.length())); 
   }
this.UtilizadorSucesso.setVisible(true);
this.UtilizadorSucesso.setSize(400, 300);
this.REGISTO.setVisible(false);
   }
catch (Exception e){
System.out.println("Erro Ao executar a query: "+ e.getMessage());
this.jLabel15.setText("ERRO NA CONECÇÃO");
}
   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que erro está dando?

 

Se for problema de import faltando, para NetBeans pressione Ctrl + Shift + i, para Eclipse Ctrl + Shift + o.

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta-me a dar erro aqui

  stmt.setString(1,arquivo.getName());
   stmt.setBinaryStream(2,inputStream,(int)arquivo.length());
   stmt.executeUpdate();

   rest = stmt.executeQuery();
   if( rest.next() ){
     Blob blob = rest.getBlob(1);
     ImageIcon imageIcon = new ImageIcon(blob.getBytes(1, (int)blob.length())); 
   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas que erro?!?!?!?

 

Apresente a mensagem de erro com a pilha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

rro Ao executar a query: logotipo (O sistema não conseguiu localizar o ficheiro especificado)

segue-se as imagens

 

dddsa.png

22319829.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

"logotipo" não é um endereço de arquivo válido. Exemplo - Windows: "C:\Pasta" Linux: "/home/pasta". Bem, se a sua intenção é informar o endereço de uma pasta que está no diretório raiz da aplicação você deve fazer assim.

File pasta = new File(new File().getAbsolutePath() + "/logotipo");

Compartilhar este post


Link para o post
Compartilhar em outros sites

não esta a funcionar

    public void uploadlogo() {
    String imagen="";
    imagen=String.valueOf(novoutilizador.getText());
       try {
String driverName = "org.gjt.mm.mysql.Driver";
Class.forName(driverName);
// Create a connection to the database
String id_BD = "gest";
String IP = "127.0.0.1";
String URL = "jdbc:mysql://" + IP + "/" + id_BD;
String username = "root";
String password = "123456";
conn = DriverManager.getConnection(URL, username, password);
} catch (ClassNotFoundException e) {
System.out.println("Erro no driver de ligação:"+e.getMessage());
} catch (SQLException e) {
System.out.println("Erro de SQL:"+e.getMessage());
}

          try{

     Statement stmt = conn.createStatement();
   File arquivo = new File(new File().getAbsolutePath() + "/logotipo");
   FileInputStream inputStream = new FileInputStream(arquivo);

   stmt.setString(1,arquivo.getName());
   stmt.setBinaryStream(2,inputStream,(int)arquivo.length());

     Blob blob = stmt.getBlob(1);

     ImageIcon imageIcon = new ImageIcon(blob.getBytes(1, (int)blob.length()));

   String query="Insert into empresa (logotipo) VALUES('"+imagen+"');";
System.out.println(""+query);
int rest = stmt.executeUpdate(query);
if (rest==0){
System.out.println("REst deu o");
}

this.UtilizadorSucesso.setVisible(true);
this.UtilizadorSucesso.setSize(400, 300);
this.REGISTO.setVisible(false);
   }
catch (Exception e){
System.out.println("Erro Ao executar a query: "+ e.getMessage());
this.jLabel45.setText("ERRO NA CONECÇÃO");
}
   }

 

ainda não esta a funcionar

alguem me pode ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

da-me um seguinte erro

rro Ao executar a query: Uncompilable source code

 String imagen="";
    imagen=String.valueOf(novoutilizador.getText());

          try{

     Statement stmt = conn.createStatement();
  File arquivo = new File(new File().getAbsolutePath() + "/logotipo");// aqui diz que tenho um erro
   FileInputStream inputStream = new FileInputStream(arquivo);

   stmt.setString(1,arquivo.getName());// aqui diz que tenho um erro
   stmt.setBinaryStream(2,inputStream,(int)arquivo.length());// aqui diz que tenho um erro
   stmt.executeUpdate();// aqui diz que tenho um erro


     Blob blob = stmt.getBlob(1);// aqui diz que tenho um erro

     ImageIcon imageIcon = new ImageIcon(blob.getBytes(1, (int)blob.length()));

   String query="Insert into empresa (logotipo) VALUES('"+imagen+"');";
System.out.println(""+query);
int rest = stmt.executeUpdate(query);
if (rest==0){
System.out.println("REst deu o");
}






this.UtilizadorSucesso.setVisible(true);
this.UtilizadorSucesso.setSize(400, 300);
this.REGISTO.setVisible(false);
   }
catch (Exception e){
System.out.println("Erro Ao executar a query: "+ e.getMessage());
this.jLabel45.setText("ERRO NA CONECÇÃO");
}
   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

...
PreparedStatement pstmt =  conn.prepareStatement("insert into empresa(nome_arq, logotipo) values (?,?)");
pstmt.setString(1,arquivo.getName());
pstmt.setBinaryStream(2,inputStream,(int)arquivo.length());
pstmt.executeUpdate();
...

 

Tenta salvar a imagem no banco desta maneira. E não implemente o recurso de salvar no banco no mesmo método em que vai recuperar. Faça isso em métodos separados.

 

PreparedStatement pstmt =  conn.prepareStatement("select logotipo from empresa");
rs = pstmt.executeQuery();
if( rs.next() ){
Blob blob = rs.getBlob(1);
ImageIcon imageIcon = new ImageIcon(blob.getBytes(1, (int)blob.length())); 

 

O tutorial que te passei explica isso mastigado. É só segui-lo. http://imasters.com.br/artigo/1456/java/salvando_imagens_no_banco_de_dados/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu pelo menos, das vezes que utilizei JDBC diretamente, só utilizei PreparedStatement. E do que jeito que você estava fazendo não funcionaria nem com e nem com o outro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

deve ficar assim

da-me o seguinte erro

Erro Ao executar a query: D:\logotipo (Acesso negado)

 

   private void jFileChooser1ActionPerformed(java.awt.event.ActionEvent evt) {
String imagen="";
imagen=String.valueOf(novoutilizador.getText());

try{

//Statement stmt = conn.createStatement();
File arquivo = new File(new File("D:").getAbsolutePath() + "/logotipo");
FileInputStream inputStream = new FileInputStream(arquivo);

PreparedStatement pstmt = conn.prepareStatement("insert into empresa(arquivo, logotipo) values (?,?)");
pstmt.setString(1,arquivo.getName());
pstmt.setBinaryStream(2,inputStream,(int)arquivo.length());
pstmt.executeUpdate();






this.UtilizadorSucesso.setVisible(true);
this.UtilizadorSucesso.setSize(400, 300);
this.REGISTO.setVisible(false);
}
catch (Exception e){
System.out.println("Erro Ao executar a query: "+ e.getMessage());
this.jLabel45.setText("ERRO NA CONECÇÃO");
}

// TODO add your handling code here:
}
[/Code]

 

devo usar o jFileChooser1 para fazer o upload

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro está mais do que claro. Você não tem permissão de rw no caminho D:\logotipo. Aí já se resolve alterando as políticas de segurança do seu Windows. Ou você muda a pasta logotipo para uma onde você tenha permissão de rw ou altere as permissões do usuário logado no SO.

 

Por que você está fazendo isso?

File arquivo = new File(new File("D:").getAbsolutePath() + "/logotipo");

 

Por que não simplesmente isso?

File arquivo = new File("D:/logotipo");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara! Agora que eu vi a besteira que você está tentando fazer. Você está tentando salvar uma pasta/diretório como se fosse uma imagem. No construtor do FileInputStream você já está passando o objeto File que referencia a pasta D:\logotipo. Tem que ser um arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com um endereço de arquivo. O endereço do arquivo que você quer salvar no banco de dados. Ex.: D:\logotipo\imagem.jpeg

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.