Я чувствую, что, вероятно, мне не хватает чего-то очень легкого здесь, но я не могу понять, что. У меня есть функция C++ (с Qt 4.7), где мне нужно получить доступ к файлам на FTP-сервере. Для этого у меня настроено следующее:
QString source = "ftp://username:[email protected]/directoryname/";
QFtp *ftp = new QFtp(this);
ftp->connectToHost(source);
connect(ftp, SIGNAL(listInfo(QUrlInfo)), this, SLOT(processInfoFromFile(QUrlInfo)));
connect(ftp, SIGNAL(done(bool)), this, SLOT(finishThisProcess()));
ftp->list();
Когда я ввожу исходный код прямо в браузер, он отображается правильно и показывает мне все файлы внутри каталога. У меня также есть другой экземпляр QFtp (другие имена переменных) в другом месте программы, настроенный таким же образом; это работает. Однако в этом случае он просто интерпретирует каталог source
как пустой и сразу же переходит к finishThisProcess
. Есть что-то, что мне не хватает? Спасибо!
EDIT: это другой экземпляр ftp-клиента:
ftp2 = new QFtp(this);
QString user = "username";
QString pass = "password";
connect(ftp2, SIGNAL(listInfo(QUrlInfo)), this, SLOT(processInfoFromFile(QUrlInfo)));
connect(ftp2, SIGNAL(done(bool)), this, SLOT(finishThisProcess()));
ftp2->connectToHost("ftp.myftpserver.com");
ftp2->login(user, pass);
ftp2->list();
Это то же самое, что и другое, за исключением того, что а) этот пытается получить доступ к одному уровню каталога выше, и б) я объявил имя пользователя и пароль отдельно, а затем вошёл в систему вручную. Я пробовал тот, который доставлял мне проблемы таким образом, но безрезультатно.