o jsch é muito bom…ja usei…funciona bem…mas nu entendi o esquema do ftp…ja fiz acesso a ssh com ele
R
renanbarros
na verdade faco upload de imagens para um diretorio no servidor, gravando referencia do caminho da imagem no banco… porem tenho que usar ssh (pedido pelo chefe) para fazer a transferencia desses arquivos para o servidor ( de forma segura)…
nunca usei o ssh , to usando FTPClient no codigo,…
Alguem sabe algum tutorial em portugues de ssh com java
T
Thiago_Senna
Se não me engano você precisa do SFTP. E para isso basta usar a biblioteca Jsch que já foi indicado pelo pessoal acima. Junto com a distribuição do Jsch tem uma pasta com exemplos.
R
renanbarros
bem … eu comecei a usar com o exemplo do scpto, porem alguns erros acontecem, tipo … channel broken… e as vezes ele entra num if do código que fecha a minha aplicacao , nao to sabendo o porque de estar dando o erro… ja debuguei no netbeans… porem nao consigo entender o erro…
alguem que ja usou o ssh… ja viu esse erro de canal quebrado???
R
renanbarros
Gente preciso de ajuda !!! preciso de alguem q ja tenha feito algo com SSH pra me ajudar !!
T
thingol
Se for muito complicado, é melhor usar o utilitário de linha de comando.
Como é uma funcionalidade “marginal” de sua aplicação, não vale a pena ficar brigando “muito tempo” com isso.
Se for no Linux ou Unix, use o “scp” ou o “sftp” que vêm com o pacote do SSH (ou OpenSSH).
R
renanbarros
cara … nao entendi muito bem
mas tenho uma classe ScptoFtp que esta enviaando meu arquivo… da so uma olhada no meu codigo
importcom.jcraft.jsch.*;importjava.awt.Image;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.Locale;importjavax.imageio.IIOImage;importjavax.imageio.ImageIO;importjavax.imageio.ImageWriteParam;importjavax.imageio.ImageWriter;importjavax.imageio.plugins.jpeg.JPEGImageWriteParam;importjavax.imageio.stream.ImageOutputStream;importjavax.swing.JOptionPane;/** * * @author renan */publicclassScpToFtp{/** Creates a new instance of ScpToFtp */publicScpToFtp(StringfileNome,Stringusuario,Stringpasswd,StringfileNome2)throwsException{FileInputStreamfis=null;Stringlfile=fileNome;Stringuser=usuario;finalStringsenha=passwd;Stringhost="10.3.186.22";Stringrfile=fileNome2;//aqui ele abre a conexaoJSchjsch=newJSch();Sessionsession=jsch.getSession(user,host,22);// username and password will be given via UserInfo interface.UserInfoui=newUserInfo(){publicStringgetPassphrase(){returnnull;}publicStringgetPassword(){returnsenha;}publicbooleanpromptPassword(Stringstring){returntrue;}publicbooleanpromptPassphrase(Stringstring){returntrue;}publicbooleanpromptYesNo(Stringstring){returntrue;}publicvoidshowMessage(Stringstring){}};session.setUserInfo(ui);session.connect();// exec 'scp -t rfile' remotelyStringcommand="scp -p -t "+rfile;Channelchannel=session.openChannel("exec");((ChannelExec)channel).setCommand(command);// get I/O streams for remote scpOutputStreamout=channel.getOutputStream();InputStreamin=channel.getInputStream();channel.connect();// send "C0644 filesize filename", where filename should not include '/'longfilesize=(newFile(lfile)).length();command="C0644 "+filesize+" ";if(lfile.lastIndexOf('/')>0){command+=lfile.substring(lfile.lastIndexOf('/')+1);}else{command+=lfile;}command+="\n";out.write(command.getBytes());out.flush();// send a content of lfile - manadan o arquivofis=newFileInputStream(lfile);byte[]buf=newbyte[1024];while(true){intlen=fis.read(buf,0,buf.length);if(len<=0)break;out.write(buf,0,len);//out.flush();}fis.close();fis=null;// send '\0'buf[0]=0;out.write(buf,0,1);out.flush();out.close();channel.disconnect();session.disconnect();}