2010-02-12 24 views

cevap

5

sftp transferleri için andFTP kullanıyorum ama açık kaynak değil.

connectBot'u kontrol edebilirsiniz. sftp transfers ile ilgili bir sorun var.

+0

Merhaba Macarse size cevabınızı Thnk. Android'de connectbolt SSH açık kaynaklı istemcisinden geçtim. Şimdi, SFTP'yi oluşturmak için FTP'yi ve SSH'yi bağlayabilir miyim? Ne kadar uygulanabilir ki, SSH'nin çoğunu bilmiyorum. Şimdiden teşekkürler. –

+0

Sanırım ekleyecekler ama henüz yok. Konuyla ilgili yorum yapın ve onlara sorun. – Macarse

4

Evet, edtFTPj/PRO, Android üzerinde çalışan ve SFTP'yi (FTP ve FTPS) destekleyen ticari bir Java kütüphanesidir.

0

jsch'u kullanabilirsiniz.

Gradle:

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

Proguard (Ben devlet tutmak ve uyarıları görmezden yok Kolay çözüm, overkill ben burada onunla karışıklık seçin..). Doğru çözümü biliyorsanız - bildirin.

-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.** 

kodu:

// 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(); 
} 
İlgili konular