2013-09-21 3 views
0

У меня возникла проблема с FTP с использованием API com.jscape.FileTransfer, который я не смог понять уже достаточно давно. Вот мой код:Jscape SFTP/FTP-загрузка в корневой каталог не работает

public void do FTPTest() { 
    FileTransfer f = protocol.equalsIgnoreCase("FTP") ? new FtpTransfer(ftpHost, userName, password, new Integer((int) port)) : (protocol.equalsIgnoreCase("SFTP") ? new SftpTransfer(
     ftpHost, 
     userName, 
     password, 
     new Integer((int) port)) : null); 
    try { 
     f.connect(); 
     f.setAuto(); 
     System.out.println(f.getDir()); 
     f.upload("test".getBytes(), "ktest1.txt"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Этот код просто подключается к серверу/SFTP FTP и загружает файл с именем «ktest.txt»

Моя проблема происходит, когда я пытаюсь загрузить файлы в корневой каталог сайт FTP/SFTP.

Случай 1: Подключение к FTP сайта 'A'

f.getDir() --> '/' 
f.upload() --> SUCCEEDS 

Случай 2: Подключение к SFTP сайта 'B'

f.getDir() --> '/' 
f.upload() --> FAILS (with permission denied error) 

Однако

Случай 3: Подключение к SFTP сайт 'В'

f.getDir() --> '/' 
f.setDirUp() 
f.getDir() --> '' 
f.upload() --> SUCCEEDS 

Обратите внимание, как она работает, когда я делаю setDirUp()

Если я пытаюсь сделать то же самое на сайте А,

Случай 4: Подключение к FTP сайта 'A'

f.getDir() --> '/' 
f.setDirUp() (permission denied error) 

Все случаи если вы делаете setDir ('testFolder') перед загрузкой файла. то есть, который не находится в базовом каталоге.

Я не понимаю, как выполнение setDirUp из '/' -> '' позволяет загружать файл в базовый каталог. Что происходит, когда вы делаете UP с '/'. Что '' ?

И как загрузка в '/' работает на некоторых FTP-сайтах.

BTW оба FTP-сайта позволяют загружать файлы в базовый каталог без каких-либо проблем с помощью клиента, такого как WinSCP.

ответ

0

Может быть, что базовый каталог / не разрешен для загрузки. Когда вы делаете setDirUp() FTP-сервер переместится обратно в каталог по умолчанию, который разрешен для FTP-передачи. Попробуйте загрузить что-то в / с помощью некоторого GUI FTP-клиента и посмотреть, работает ли он.

+0

Я могу загрузить файлы в порядке «/» с помощью FTP-клиента. –

+0

Странно то, что когда я делаю getDirListing() на '/' или '', он дает мне то же самое содержимое. Поэтому я не понимаю, как это волшебство работает после выполнения setDirUp(). –

+0

Я уверен, что это связано с настройкой данного FTP/SFTP-сервера. Можете ли вы просто попытаться сделать то же самое на любом другом общедоступном FTP/SFTP-сервере с анонимным доступом и подтвердить, что проблема не устранена. – Archer

Смежные вопросы