Russian Qt Forum
Июнь 11, 2024, 11:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QFTP  (Прочитано 18688 раз)
dread
Гость
« : Апрель 25, 2007, 09:06 »

Подскажите наиболее простой способ при помощи QFtp скачать файлы из папки по масске в каталог на диске - и совершить обратную операцию...

ftp->connectToHost(ftp_HOST,ftp_PORT);
ftp->login(ftp_NAME,ftp_PASSWORD);

далее чере ->list() ? и сигнал listInfo ?

а при записи? ->put() ?

если подкините примерчик работы с чтением / записью файлов  на QFTP буду очень благодарен.

Понимаю что вопрос наверное немного ламерский, просто не могу сам разобраться в этом классе....

добавлено спустя 2 часа 38 минут:

 Вроде разобрался... остался только один вопрос:
как организовать передачу многих файлов?
открываем - передаем - закрываем - открываем следующий?... повторить?

добавлено спустя 1 час:

 в чем может быть проблема?

пытаюсь скопировать файл на фтп сервер

на сигнале завершения команды пут ловлю еррор с кодом 1 Непонимающий

добавлено спустя 29 минут:

    ftp1->connectToHost(ftp_HOST,ftp_PORT);
   ftp1->login(ftp_NAME,ftp_PASSWORD);   
   ftp1->cd("..");
   //ftp1->list();
   QFile file("D:\\test.txt");
   file.open(QIODevice::ReadOnly | QIODevice::Unbuffered);
   ftp1->put( &file , "test.txt" );
   ftp1->close();

на выполнение этого кода получаю ошибку (на комманде put):
отсылает к этой строче класса qFTP:
 if (c->data.dev->isSequential())

что он хочет этим сказать?
почему я не могу произвести операцию записи???

добавлено спустя 43 минуты:

 почему команда put только создает пустой файл - затем рвет соединение?
сообщая о том что мол все ок ?

добавлено спустя 14 минут:

 ftp1->connectToHost(ftp_HOST,ftp_PORT);
ftp1->login(ftp_NAME,ftp_PASSWORD);   
ftp1->setTransferMode(QFtp::Passive);
file = new QFile("D:\\test.jpg");
ftp1->rawCommand("STOR D:\\test.jpg");
//file->open(QIODevice::ReadOnly);
//ftp1->put( file , "nikola.jpg" );
//ftp1->get( "Ten.jpg" , file );
ftp1->close();

в чем возможня ошибка? почему чтение работает безупречно, в то время как запись на сервер создает пустой файл и рвет соединение... файл открыт для чтения... что может быть причиной такого поведения???
Записан
dread
Гость
« Ответ #1 : Апрель 26, 2007, 04:55 »

Неужели никто не работал с QFTP на закачку?
Записан
dread
Гость
« Ответ #2 : Апрель 27, 2007, 05:37 »

Разобрался сам, если кому интересно, пишите мне
Записан
BlackLagarto
Гость
« Ответ #3 : Апрель 08, 2009, 23:29 »

Интересно послушать решение которое вы нашли...

Насколько я понимаю если я хочу залить на сервак кучу файлов то прежде чем послать следующий файл мне надо отследить загрузился ли предыдущий.

Как это в коде реализовать или я в корне не прав?
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #4 : Апрель 10, 2009, 17:25 »

Интересно послушать решение которое вы нашли...

Насколько я понимаю если я хочу залить на сервак кучу файлов то прежде чем послать следующий файл мне надо отследить загрузился ли предыдущий.

Как это в коде реализовать или я в корне не прав?

Тоже хочу это узнать
Записан

Собираю информацию по крупицам
http://webhamster.ru
roginovicci
Гость
« Ответ #5 : Апрель 27, 2009, 11:39 »

И я.
Хотя примерно понятно. Надо отлавливать сигналы, а саму загрузку запускать из нового треда. Поправте меня если я не прав.
« Последнее редактирование: Апрель 27, 2009, 12:14 от roginovicci » Записан
BlackLagarto
Гость
« Ответ #6 : Май 02, 2009, 20:06 »

Алгоритм примерно следующий

1.Создаем очередь из файлов которые хотим закинуть на Фтп (ftp.put()Подмигивающий
2.Проверяем зугрузился ли файл
3.Кидаем следующий
Записан
PunX
Гость
« Ответ #7 : Июнь 05, 2009, 20:02 »

День добрый, столкнулся с проблемоя при копировании файлов на фтп
Код:
 void FtpWindow::uploadFile() {
       QString fileName = QFileDialog::getOpenFileName(this);
       QFileInfo  fi(fileName);
       QFile *upfile = new QFile(fileName);
       upfile->open(QIODevice::ReadOnly | QIODevice::Unbuffered);
       ftp->put(upfile, fi.fileName());
       connect(upfile, SIGNAL(done(bool)), this, SLOT(close()));
       upfile->close();
       progressDialog->setLabelText(tr("uploading %1...").arg(fi.fileName()));
       uploadButton->setEnabled(false);
       progressDialog->exec();}
но файл не копируется вообще, прогресс бар зависает на 0% и всё!
Записан
Krow
Гость
« Ответ #8 : Июнь 08, 2009, 19:17 »

мне тоже интересно. как правильно закачать файл?? или никто не знает??
попытался экзамплы посмотреть... нифига оттуда не понял.
Записан
ритт
Гость
« Ответ #9 : Июнь 08, 2009, 19:32 »

Код:
       connect(upfile, SIGNAL(done(bool)), this, SLOT(close()));
//       upfile->close();
       ftp->put(upfile, fi.fileName());
и ещё неплохо было бы соединить сигнал о прогрессе передачи фтп со слотом прогресса прогрессдиалога...
Записан
Krow
Гость
« Ответ #10 : Июнь 10, 2009, 08:46 »

Код:
	ftp.abort();
ftp.connectToHost(host, 21);
ftp.login(login, passwd);
QFile *fileOut = new QFile("prays.cs");
ftp.cd(dir);
ftp.put(fileOut, fileOut->fileName());
ftp.close();
вот мой код загрузки файла.. но фтп соединение рвется раньше чем я завершу загрузку файла.. где у меня тут ошибка?? и как вообще отслеживается выполнение загрузки?? подскажите, а?
Записан
BRE
Гость
« Ответ #11 : Июнь 10, 2009, 09:18 »

Код:
        ...
ftp.close(); // !!!
вот мой код загрузки файла.. но фтп соединение рвется раньше чем я завершу загрузку файла.. где у меня тут ошибка?? и как вообще отслеживается выполнение загрузки?? подскажите, а?
Не нужно ничего закрывать сразу! Обмен идет асинхронно, команда put и get только запускают этот процесс.
Все состояния сообщаются клиенту через сигналы. По моему, из названий сигналов и так все ясно.  Подмигивающий
Записан
ритт
Гость
« Ответ #12 : Июнь 10, 2009, 09:30 »

мля, я для кого close закомментировал?!
Записан
Krow
Гость
« Ответ #13 : Июнь 10, 2009, 09:40 »

я уже удалил закрытие из той части кода
dataTransferProgress() или commandFinished(). какой из этих сигналов нужно использовать? думаю что второй.. тока вот вопрос как его правильно пользовать???
Записан
Krow
Гость
« Ответ #14 : Июнь 10, 2009, 13:30 »

попробовал сделать как у PunX.. проблема та же.. логинится. создает файл новый.. и фсё... и тишина..
Код:
	ftp.abort();
ftp.connectToHost(host, 21);
//lwConn->addItem(tr("Соединяюсь с сервером. Логин - %1").arg(login));
ftp.login(login, passwd);
QFile *fileOut = new QFile("prays.cs");
QFileInfo  fi("prays.cs");
ftp.cd(dir);
fileOut->open(QIODevice::ReadOnly | QIODevice::Unbuffered);
ftp.put(fileOut, fi.fileName());
progressDialog->setLabelText(tr("Загрузка %1...").arg(fi.fileName()));
    progressDialog->exec();
и где тут ошибка??
Константин... я щас не так часто обращаюсь за помощью, только то что действительно не знаю.. или не могу разобраться. был бы признателен если бы не ругались. не всё дается сразу
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 19.