2013-02-12 6 views
12

Wie übertragen Sie eine Datei über SFTP in Java? Ich möchte Beispielcode für SFTP-Client. Ich möchte den SFTP-Server in meine Anwendung einbetten und der Client sollte eine Datei an meine Anwendung senden können.wie eine Datei über SFTP in Java übertragen?

PS: Dies wurde für SFTP-Client angefordert. Und diese Frage ist kein Duplikat von zwei anderen Fragen.

Antwort

46

Versuchen Sie diesen Code.

public void send (String fileName) { 
     String SFTPHOST = "host:IP"; 
     int SFTPPORT = 22; 
     String SFTPUSER = "username"; 
     String SFTPPASS = "password"; 
     String SFTPWORKINGDIR = "file/to/transfer"; 

     Session session = null; 
     Channel channel = null; 
     ChannelSftp channelSftp = null; 
     System.out.println("preparing the host information for sftp."); 
     try { 
      JSch jsch = new JSch(); 
      session = jsch.getSession(SFTPUSER, SFTPHOST, SFTPPORT); 
      session.setPassword(SFTPPASS); 
      java.util.Properties config = new java.util.Properties(); 
      config.put("StrictHostKeyChecking", "no"); 
      session.setConfig(config); 
      session.connect(); 
      System.out.println("Host connected."); 
      channel = session.openChannel("sftp"); 
      channel.connect(); 
      System.out.println("sftp channel opened and connected."); 
      channelSftp = (ChannelSftp) channel; 
      channelSftp.cd(SFTPWORKINGDIR); 
      File f = new File(fileName); 
      channelSftp.put(new FileInputStream(f), f.getName()); 
      log.info("File transfered successfully to host."); 
     } catch (Exception ex) { 
      System.out.println("Exception found while tranfer the response."); 
     } 
     finally{ 

      channelSftp.exit(); 
      System.out.println("sftp Channel exited."); 
      channel.disconnect(); 
      System.out.println("Channel disconnected."); 
      session.disconnect(); 
      System.out.println("Host Session disconnected."); 
     } 
    } 
+0

mein Zielverzeichnis benötigt sudo Erlaubnis irgendeine Idee wie kann ich das tun? @Dhinakar – Ajak6

+0

was ist, wenn ich das Arbeitsverzeichnis nicht kenne. Ich kenne nur den Dateipfad? Wie behandelt man dann den CD-Befehl? –

+0

@ Ajak6 Haben Sie eine Lösung für sudo Berechtigungen gefunden? – Dish

Verwandte Themen