2010-02-12 42 views

Trả lời

5

Tôi sử dụng andFTP để chuyển giao sftp nhưng không phải là nguồn mở.

Bạn có thể kiểm tra connectBot. Có sự cố về số sftp transfers.

+0

Hi Macarse thnk bạn trả lời của bạn. Tôi đã đi qua connectbolt SSH khách hàng nguồn mở trên Android. Bây giờ tôi muốn hỏi tôi có thể tích hợp FTP và SSH connectbolt để tạo SFTP của tôi không ?? Có bao nhiêu khả thi nó sẽ được xem xét rằng tôi không biết nhiều nội bộ của SSH. Cảm ơn trước. –

+0

Tôi nghĩ rằng họ sẽ thêm nó, nhưng nó chưa có. Đăng nhận xét về vấn đề và yêu cầu họ. – Macarse

4

Có, edtFTPj/PRO là thư viện Java thương mại hoạt động trên Android và hỗ trợ SFTP (cũng như FTP và FTPS).

0

Bạn có thể sử dụng jsch.

Gradle:

compile group: 'com.jcraft', name: 'jsch', version: '0.1.54' 

Proguard (Tôi giữ nó nào và bỏ qua các cảnh báo Giải pháp dễ dàng, quá mức cần thiết tôi chọn không gây rối với nó ở đây..). Nếu bạn biết giải pháp đúng - hãy cho tôi biết.

-keep class com.jcraft.jsch.jce.* 
-keep class * extends com.jcraft.jsch.KeyExchange 
-keep class com.jcraft.jsch.** 
-keep class com.jcraft.jzlib.** 
-keep class com.jcraft.jsch.jce.* 
-keep class com.jcraft.jzlib.ZStream 
-keep class com.jcraft.jsch.Compression 
-keep class org.ietf.jgss.* 
-dontwarn org.ietf.jgss.** 
-dontwarn com.jcraft.jsch.** 

mã:

// add correct exception-handling; remember to close connection in all cases 
public void doUpload(String host, String user, String password, String folder, int port, File file){ 
    JSch jsch = new JSch(); 

    Session session = jsch.getSession(user, host, port); 
    session.setPassword(password); 

    java.util.Properties config = new java.util.Properties(); 
    //Don't do it on Production -- makes it MITM-vulnerable 
    config.put("StrictHostKeyChecking", "no"); 
    session.setConfig(config); 
    session.setTimeout(5000); 
    session.setConfig("PreferredAuthentications", "password"); 
    session.connect(); 

    Channel channel = session.openChannel("sftp"); 
    channel.connect(); 
    ChannelSftp channelSftp = (ChannelSftp) channel; 

    String home = channelSftp.getHome(); 
    if (folder == null || folder.length() == 0 || "/".equals(folder)) { 
     folder = home; 
    } else { 
     File file = new File(new File(home), folder); 
     folder = file.getPath(); 
    } 
    channelSftp.cd(folder); 

    try (BufferedInputStream buffIn = new BufferedInputStream(new FileInputStream(file.getPath()))) { 
     ProgressInputStream progressInput = new ProgressInputStream(buffIn, progressListener, file.length()); 
     channelSftp.put(progressInput, file.getName()); 
    } 

    channelSftp.disconnect(); 
    session.disconnect(); 
} 
Các vấn đề liên quan