Fiz um código para upload de arquivos em java
desktop mas está dando erro nesta linha
nao sei se esta certo para funcionar e depois ele pega e salvar no banco de dados
btnNewButton.addActionListener(newActionListener(){publicvoidactionPerformed(FileUploadEvente){try{Produtoproduto=newProduto();UploadedFilearquivoUpload=e.getFile();PatharquivoTemp=Files.createTempFile(null,null);Files.copy(arquivoUpload.getInputstream(),arquivoTemp,StandardCopyOption.REPLACE_EXISTING);produto.setCaminho(arquivoTemp.toString());System.out.println("Upload realizado com sucesso");}catch(IOExceptionerro){System.out.println("Ocorreu um erro ao tentar realizar o upload de arquivo");erro.printStackTrace();}}});
Código para savar no banco
btnSalvar.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){// GEN-FIRST:event_jButton1ActionPerformed// TODO add your handling code here:Sessionsessao=HibernateUtil.getFabricaDeSessoes().openSession();Transactiontransacao=null;Produtoproduto=newProduto();try{if(produto.getCaminho()==null){System.out.println("O campo foto é obrigatório");return;}Pathorigem=Paths.get(produto.getCaminho());Pathdestino=Paths.get("C:/Programacao/Uploads/"+produto.getCodigo()+".png");try{Files.copy(origem,destino,StandardCopyOption.REPLACE_EXISTING);}catch(IOExceptione1){// TODO Auto-generated catch blocke1.printStackTrace();}produto.setDescricao(textField.getText());produto.setQuantidade(Short.parseShort(textField_1.getText()));produto.setPreco(Double.parseDouble(textField_2.getText()));produto.setCaminho(textField_3.getText());Fabricanteest=resultado.get(comboBox.getSelectedIndex());produto.setFabricante(est);System.out.println(est);transacao=sessao.beginTransaction();sessao.save(produto);transacao.commit();transacao=sessao.beginTransaction();sessao.save(produto);transacao.commit();}catch(RuntimeExceptionerro){if(transacao!=null){transacao.rollback();}throwerro;}finally{sessao.close();}}});}}
Olá.
Quando você cita “erro”, precisa informar qual erro, senão, ficamos perdidos.
D
Dfodani
Exception in thread “AWT-EventQueue-0” java.lang.Error: Unresolved compilation problem:
The type new ActionListener(){} must implement the inherited abstract method ActionListener.actionPerformed(ActionEvent)
so esse erro rsrs por enquanto rsrs acredito que não é actionlistener é outra coisa pra funcionar o botao de upload
D
Dfodani
primeira vez que uso upload rs
D
darlan_machado
O problema está aqui.
O método actionPerformed aguarda um ActionEvent e não um FileUploadEvent.
D
Dfodani
a minha duvida é como que eu posso fazer para funcionar o botão de upload
nesse codigo aqui que seria o codigo do botao upload simples assim rs
try{Produtoproduto=newProduto();UploadedFilearquivoUpload=e.getFile();PatharquivoTemp=Files.createTempFile(null,null);Files.copy(arquivoUpload.getInputstream(),arquivoTemp,StandardCopyOption.REPLACE_EXISTING);produto.setCaminho(arquivoTemp.toString());System.out.println("Upload realizado com sucesso");}catch(IOExceptionerro){System.out.println("Ocorreu um erro ao tentar realizar o upload de arquivo");erro.printStackTrace();}
D
darlan_machado1 like
Upload para desktop é meio estranho, afinal, o desktop é local…
Eu adicionaria um JFileChooser. Após o arquivo ser selecionado, processaria o mesmo para colocá-lo/copiá-lo para o local adequado (banco de dados, no caso).
D
Dfodani
Fiz um jfilechooser ele procura o arquivo adiciona a url ai clico em salvar e fica falando que o compo foto é obrigatorio e não salva nada… vou postar meu codigo salvar para voce ver
btnSalvar.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){// GEN-FIRST:event_jButton1ActionPerformed// TODO add your handling code here:Sessionsessao=HibernateUtil.getFabricaDeSessoes().openSession();Transactiontransacao=null;Produtoproduto=newProduto();try{if(produto.getCaminho()==null){System.out.println("O campo foto é obrigatório");return;}Pathorigem=Paths.get(produto.getCaminho());Pathdestino=Paths.get("C:/Programacao/Uploads/"+produto.getCodigo()+".png");try{Files.copy(origem,destino,StandardCopyOption.REPLACE_EXISTING);}catch(IOExceptione1){// TODO Auto-generated catch blocke1.printStackTrace();}produto.setDescricao(textField.getText());produto.setQuantidade(Short.parseShort(textField_1.getText()));produto.setPreco(Double.parseDouble(textField_2.getText()));produto.setCaminho(textField_3.getText());Fabricanteest=resultado.get(comboBox.getSelectedIndex());produto.setFabricante(est);System.out.println(est);transacao=sessao.beginTransaction();sessao.save(produto);transacao.commit();transacao=sessao.beginTransaction();sessao.save(produto);transacao.commit();}catch(RuntimeExceptionerro){if(transacao!=null){transacao.rollback();}throwerro;}finally{sessao.close();}}});}}
como eu poderia fazer para salvar?
D
darlan_machado
Eu não conheço tuas regras de negócio. Porém, esse trecho indica que, por alguma razão, o atributo caminho do objeto produto não foi definido. Isso causa o erro apresentado.
D
Dfodani
vou ver
D
darlan_machado
Se eu puder sugerir algo, seria para você organizar melhor teus pensamentos e tua lógica.
Repare que, no modo anterior (o que dava erro na linha do actionPerformed), você instancia o produto e define qual seu caminho:
Porém, na nova versão (funcional), não faz nada disso.
O que me leva a crer que você não está sabendo o que quer fazer, exatamente.
D
Dfodani
tirei esta linha só que ainda da erro
btnSalvar.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){// GEN-FIRST:event_jButton1ActionPerformed// TODO add your handling code here:Sessionsessao=HibernateUtil.getFabricaDeSessoes().openSession();Transactiontransacao=null;Produtoproduto=newProduto();try{Pathorigem=Paths.get(produto.getCaminho());Pathdestino=Paths.get("C:/Programacao/Uploads/"+produto.getCodigo()+".png");try{Files.copy(origem,destino,StandardCopyOption.REPLACE_EXISTING);}catch(IOExceptione1){// TODO Auto-generated catch blocke1.printStackTrace();}produto.setDescricao(textField.getText());produto.setQuantidade(Short.parseShort(textField_1.getText()));produto.setPreco(Double.parseDouble(textField_2.getText()));produto.setCaminho(textField_3.getText());Fabricanteest=resultado.get(comboBox.getSelectedIndex());produto.setFabricante(est);System.out.println(est);transacao=sessao.beginTransaction();sessao.save(produto);transacao.commit();transacao=sessao.beginTransaction();sessao.save(produto);transacao.commit();}catch(RuntimeExceptionerro){if(transacao!=null){transacao.rollback();}throwerro;}finally{sessao.close();}}});}}
eu ja usei jfilechooser para anexar um anexo no email mas eu vou ver aqui na net alguns exemplos usando ele é que esse codigo era de um curso que fiz mas usei jsf
D
Dfodani
desisti do upload vou deixar por ultimo
tem bastante coisa pra fazer ainda rsrs
ai depois do mais uma pesquisada rs
D
darlan_machado
Mas JSF não tem nada a ver com java desktop/swing.
Olha, @Dfodani, no meu ponto de vista, como comentei anteriormente, você está tentando desenvolver de forma desorganizada.
Veja que você pega um exemplo da internet, “bate” nele até funcionar, mas, não aplica da maneira como necessita.
Eu acredito que seja uma questão de lógica de programação, de organizar o que precisa e quando precisa. Entende?
D
Dfodani
sim mas é que estou tentando fazer a aplicação o mais simples possível sei que jsf nao tem a ver com desktop
eu tenho algumas aplicações aqui e reutilizo o código e as vezes não certo e venho perguntar aqui apenas isso
D
Dfodani
e vejo alguns exemplos na internet também e implemento no código e peço auxilio também pegar valores eu sei problema é que não prestei mta atenção no código do upload mas eu vou pesquisar mais pra analisar melhor o código é que ja tinha de uma aplicação que havia feito