2013-02-12 31 views
12

Cách chuyển tệp qua SFTP bằng java? Tôi muốn mã mẫu cho ứng dụng khách SFTP. Tôi muốn nhúng máy chủ SFTP vào ứng dụng của mình và khách hàng có thể gửi tệp đến ứng dụng của tôi.cách chuyển tệp qua SFTP bằng java?

PS: Điều này đã được yêu cầu cho ứng dụng khách SFTP. Và câu hỏi này không trùng lặp với hai câu hỏi khác.

Trả lời

46

Hãy thử mã này.

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

thư mục đích của tôi cần quyền sudo bất kỳ ý tưởng nào tôi có thể làm điều đó? @Dhinakar – Ajak6

+0

nếu tôi không biết thư mục làm việc. Tôi chỉ biết đường dẫn tập tin? Làm thế nào để xử lý lệnh cd sau đó? –

+0

@ Ajak6 Bạn đã tìm thấy giải pháp để có quyền sudo? – Dish

Các vấn đề liên quan