2010-02-12 13 views
10

मैं अपने एंड्रॉइड प्रोजेक्ट में एसएफटीपी का उपयोग करना चाहता हूं। क्या एंड्रॉइड में पहले से ही एसएफटीपी लाइब्रेरी है, या क्या मुझे इसे लागू करना है?एंड्रॉइड एसटीएफपी लाइब्रेरी

उत्तर

5

मैं sftp स्थानांतरण के लिए andFTP का उपयोग करता हूं लेकिन यह खुला स्रोत नहीं है।

आप connectBot देख सकते हैं। sftp transfers के बारे में कोई समस्या है।

+0

हाय Macarse आप अपने जवाब on नहीं। मैं एंड्रॉइड पर कनेक्टबॉल्ट एसएसएच ओपन सोर्स क्लाइंट के माध्यम से चला गया। अब मैं पूछना चाहता हूं कि क्या मैं अपने एसएफटीपी बनाने के लिए एफ़टीपी एकीकृत कर सकता हूं और एसएसएच को कनेक्ट कर सकता हूं ?? यह विचार करना कितना व्यवहार्य होगा कि मैं एसएसएच के आंतरिक के बारे में ज्यादा नहीं जानता। अग्रिम धन्यवाद। –

+0

मुझे लगता है कि वे इसे जोड़ने जा रहे हैं, लेकिन यह अभी तक नहीं है। इस मुद्दे पर एक टिप्पणी पोस्ट करें और उनसे पूछें। – Macarse

4

हां, edtFTPj/PRO एक वाणिज्यिक जावा लाइब्रेरी है जो एंड्रॉइड पर काम करती है और एसएफटीपी (साथ ही साथ एफ़टीपी और एफटीपीएस) का समर्थन करती है।

0

आप jsch का उपयोग कर सकते हैं।

Gradle:

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

Proguard (मैं इसे सार्वजनिक रहते हो और चेतावनियों की अनदेखी आसान समाधान, overkill मैं यहाँ इसके साथ गड़बड़ करने के लिए चुनें।।)। यदि आपको सही समाधान पता है - मुझे बताएं।

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

कोड:

// 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(); 
} 
संबंधित मुद्दे