Код ошибки загрузки файла по FTP = 425, сообщение = Не удается открыть соединение для передачи данных - PullRequest
1 голос
/ 22 февраля 2012

Я использую ftp4j для FTP-соединения через апплет для загрузки файла.С сервера я уже открываю FTP-сайт с портом 27, targetURL = локальный IP-адрес 192.168.x.xxx и предоставляю доступ для имени пользователя FTPUser, пароля xxxx.

FTPClient client = new FTPClient();
client.connect(targetURL, port);
client.setType(client.TYPE_BINARY);
client.login(user, password);
fis = new FileInputStream(targetFile);
client.upload(targetFile);

Он успешно подключается и загружает файлчерез апплет, во внутренней сети

Однако, когда я пытаюсь провести тестирование с внешней сетью, маршрутизатор уже настроен с помощью NAT для преобразования локального IP-адреса во внешний IP-адрес: 175.136.xxx.xxx с портом 47027 (уже протестированFTP-соединение с использованием команды), я получил это сообщение об ошибке:

user: FTPUser, password: xxxx port 47027
network: Connecting http://175.136.xxx.xxx:47027/  with proxy=DIRECT
network: Connecting http://175.136.xxx.xxx:20459/  with proxy=DIRECT
it.sauronsoftware.ftp4j.FTPException [code=425, message= Can't open data connection.]
at it.sauronsoftware.ftp4j.FTPClient.upload(FTPClient.java:2658)
at it.sauronsoftware.ftp4j.FTPClient.upload(FTPClient.java:2539)
at it.sauronsoftware.ftp4j.FTPClient.upload(FTPClient.java:2410)

Как из журнала ошибок, он пытался установить соединение через порт 47027, затем после этого изменить на 20459 (что я не знаю,откуда он берется).

Я вижу, что файл создан на FTP-сайте сервера, но с 0 байтами.

Кто-нибудь знает, что не так в этой ситуации?

1 Ответ

0 голосов
/ 14 декабря 2013

Вместо этого используйте пассивный режим.Ваша сторона может блокировать порт.

...