Tôi muốn sử dụng SFTP trong dự án Android của mình. Android đã có thư viện SFTP hay tôi phải triển khai?Thư viện STFP Android
10
A
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.
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();
}
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. –
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