Ошибка подключение к FTP серверу через Android
Пытаюсь грузить файл на сервер с помощью FTP клиента. Каждый раз при подключении выдает ошибку
java.net.ConnectException: failed to connect to /мой ип (port 21) from /:: (port 45523): connect failed: ECONNREFUSED (Connection refused)
public void goforIt(String path){
FTPClient con = null;
try
{
con = new FTPClient();
con.connect("ип");
if (con.login("root", "2323211"))
{
con.enterLocalPassiveMode(); // important!
con.setFileType(FTP.BINARY_FILE_TYPE);
String data = path;
FileInputStream in = new FileInputStream(new File(data));
boolean result = con.storeFile("var/www/html/gpstracker/api/v1/users/images/" + "test.png", in);
in.close();
if (result) Log.v("upload result", "succeeded");
con.logout();
con.disconnect();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
Ответы (1 шт):
Автор решения: ivff
→ Ссылка
Как я прочитал на других ресурсах дело в том что FTPClient не подключается к серверу как SFTP, поэтому я использовал JSch добавить его можно следующим образом в build.grable
implementation group: 'com.jcraft', name: 'jsch', version: '0.1.54'
сам код
//path - путь к файлу на вашем девайсе
//pathname - имя файла
public void uploadImage(String path, String pathname) {
System.out.println(pathname);
try {
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
Session session = jsch.getSession(username, ip);
session.setPassword(password);
session.setConfig(config);
session.connect();
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
sftpChannel.connect();
sftpChannel.put(path, "/var/www/html/gpstracker/api/v1/users/images/");
System.out.println("+");
} catch (Exception e){
e.printStackTrace();
}
}