Любой способ указать абсолютные пути в FTP-URL? - PullRequest
6 голосов
/ 22 июля 2009

Я использую Java URL и классы URLConnection для загрузки файла на сервер с использованием FTP. Мне не нужно ничего делать, кроме как просто загрузить файл, поэтому я хотел бы избегать любых внешних библиотек, и я опасаюсь использовать неподдерживаемый класс sun.net.ftp.

Есть ли способ использовать абсолютные пути в строке подключения FTP? Я хотел бы поместить мои файлы в что-то вроде "/ ftptransfers / ...", но путь FTP относительно домашнего каталога пользователя.

Пример кода загрузки:

URL url = new URL("ftp://username:password@host/file.txt");
URLConnection uc = url.openConnection();
uc.setDoOutput(true);
OutputStream out = uc.getOutputStream() ;
out.write("THIS DATA WILL BE WRITTEN TO FILE".getBytes());
out.close();

Ответы [ 2 ]

7 голосов
/ 24 июля 2009

Я действительно обнаружил, что есть полу-стандартный способ сделать это, который работал для меня.

Краткий ответ: заменить начальную косую черту на "% 2F"

Длинный ответ: согласно «Формату URL FTP» документу:

Например, URL " ftp: //myname@host.dom/%2Fetc/motd" является интерпретируется с помощью FTP-входа в «host.dom», входя в систему как «myname» (запрашивает пароль, если он запрашивается), а затем выполняет "CWD / и т. Д.", А затем "RETR MOTD".

Это имеет другое значение от « ftp: //myname@host.dom/etc/motd», что означает «CWD и т. Д.», А затем "RETR MOTD"; начальное «CWD» может быть выполнено относительно каталог по умолчанию для "моего имени".

С другой стороны, « ftp: //myname@host.dom//etc/motd», будет «CWD» с нулем аргумент, затем «CWD и т. д.», а затем «RETR motd».

1 голос
/ 22 июля 2009

Я думаю, что вам лучше всего использовать FTP-компонент apache commons и делать cd после подключения.

вы всегда можете написать обертку, чтобы при желании можно было указать URL в указанном выше формате

* 1005-ACE *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...