Как отправить файл на фтп сервер?
Как отправить файл а имено картинку на фтп сервер в указанную директорию?
Пробовал таким образом но получаю неудачу.
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FTPClient ftpClient = null;
try {
ftpClient = new FTPClient();
ftpClient.connect("*********");
if (ftpClient.login("*******", "********")) {
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
String data = "file:///android_asset/example.png";
FileInputStream in = new FileInputStream(data);
FTPClient con = null;
boolean result = con.storeFile("/example.png", in);
in.close();
ftpClient.logout();
ftpClient.disconnect();
}
}
catch (Exception e) {
Toast.makeText(getApplicationContext(), "Неудача", Toast.LENGTH_SHORT).show();
}
}
});
При использование ниже указанного кода получаю ту же ошибку
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect("*********");
if (ftpClient.login("*******", "********")) {
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
String sourceFilePath = "file:///android_asset/example.png";
File sourceFile = new File(new URI(sourceFilePath));
InputStream inputStream = new FileInputStream(sourceFile);
boolean result = ftpClient.storeFile("/example.png", inputStream);
inputStream.close();
if (result) {
Toast.makeText(getApplicationContext(), "Файл успешно загружен на сервер", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Не удалось загрузить файл на сервер", Toast.LENGTH_SHORT).show();
}
ftpClient.logout();
ftpClient.disconnect();
}
}
catch (Exception e) {
Toast.makeText(getApplicationContext(), "Неудача", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
});
Logcat
2023-03-30 22:36:43.280 9422-9422/com.buratinoapps.openapp I/Choreographer: Skipped 32 frames! The application may be doing too much work on its main thread.
2023-03-30 22:36:47.810 9422-9422/com.buratinoapps.openapp W/System.err: android.os.NetworkOnMainThreadException
2023-03-30 22:36:47.812 9422-9422/com.buratinoapps.openapp W/System.err: at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1668)
2023-03-30 22:36:47.815 9422-9422/com.buratinoapps.openapp W/System.err: at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:115)
2023-03-30 22:36:47.822 9422-9422/com.buratinoapps.openapp W/System.err: at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
2023-03-30 22:36:47.822 9422-9422/com.buratinoapps.openapp W/System.err: at java.net.InetAddress.getByName(InetAddress.java:1106)
2023-03-30 22:36:47.824 9422-9422/com.buratinoapps.openapp W/System.err: at java.net.InetSocketAddress.<init>(InetSocketAddress.java:235)
2023-03-30 22:36:47.829 9422-9422/com.buratinoapps.openapp W/System.err: at org.apache.commons.net.SocketClient.connect(SocketClient.java:176)
2023-03-30 22:36:47.832 9422-9422/com.buratinoapps.openapp W/System.err: at org.apache.commons.net.SocketClient.connect(SocketClient.java:268)
2023-03-30 22:36:47.838 9422-9422/com.buratinoapps.openapp W/System.err: at com.buratinoapps.openapp.MainActivity.lambda$onCreate$0$com-buratinoapps-openapp-MainActivity(MainActivity.java:41)
2023-03-30 22:36:47.839 9422-9422/com.buratinoapps.openapp W/System.err: at com.buratinoapps.openapp.MainActivity$$ExternalSyntheticLambda0.onClick(Unknown Source:4)
2023-03-30 22:36:47.839 9422-9422/com.buratinoapps.openapp W/System.err: at android.view.View.performClick(View.java:7455)
2023-03-30 22:36:47.839 9422-9422/com.buratinoapps.openapp W/System.err: at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1202)
2023-03-30 22:36:47.840 9422-9422/com.buratinoapps.openapp W/System.err: at android.view.View.performClickInternal(View.java:7432)
2023-03-30 22:36:47.840 9422-9422/com.buratinoapps.openapp W/System.err: at android.view.View.access$3700(View.java:835)
2023-03-30 22:36:47.846 9422-9422/com.buratinoapps.openapp W/System.err: at android.view.View$PerformClick.run(View.java:28810)
2023-03-30 22:36:47.846 9422-9422/com.buratinoapps.openapp W/System.err: at android.os.Handler.handleCallback(Handler.java:938)
2023-03-30 22:36:47.846 9422-9422/com.buratinoapps.openapp W/System.err: at android.os.Handler.dispatchMessage(Handler.java:99)
2023-03-30 22:36:47.847 9422-9422/com.buratinoapps.openapp W/System.err: at android.os.Looper.loopOnce(Looper.java:201)
2023-03-30 22:36:47.847 9422-9422/com.buratinoapps.openapp W/System.err: at android.os.Looper.loop(Looper.java:288)
2023-03-30 22:36:47.856 9422-9422/com.buratinoapps.openapp W/System.err: at android.app.ActivityThread.main(ActivityThread.java:7842)
2023-03-30 22:36:47.856 9422-9422/com.buratinoapps.openapp W/System.err: at java.lang.reflect.Method.invoke(Native Method)
2023-03-30 22:36:47.856 9422-9422/com.buratinoapps.openapp W/System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
2023-03-30 22:36:47.857 9422-9422/com.buratinoapps.openapp W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
Указывает на 41 строку ftpClient.connect("92.123.11.126");
Я это дело в поток засунул но нечего не срабатывает.
btn.setOnClickListener(v -> {
new Thread(()->{
Looper.prepare();
try {
ftpClient.connect("93.190.17.186/photo");
if (ftpClient.login("ftp_user", "nF773i9skJ62")) {
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
String sourceFilePath = "file:///android_asset/example.txt";
File sourceFile = new File(new URI(sourceFilePath));
InputStream inputStream = new FileInputStream(sourceFile);
boolean result = ftpClient.storeFile("example.txt", inputStream);
inputStream.close();
if (result) {
Toast.makeText(getApplicationContext(), "Файл успешно загружен на сервер", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Не удалось загрузить файл на сервер", Toast.LENGTH_SHORT).show();
}
ftpClient.logout();
ftpClient.disconnect();
}
}
catch (Exception e) {
Toast.makeText(getApplicationContext(), "Неудача", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}).start();
});