crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QFtp, как закачать файл?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Ov3r1oad Дата 21.12.2011, 18:13
  Собственно, время идёт, а проблемы остаются те же.

file = new QFile(ToQString("/home/vdi/123.log"));
if ((file->exists()) && file->open(QIODevice::ReadOnly))
{
label_status->setText(file->fileName());
}
ftp->put(file, file->fileName());

Простейший код, однако записать файл на фтп-сервер не получается. ftp->ErrorString выдаёт следующее: "Uploading file failed. File write error". Сервер - GuildFTPd, стоит на винде. А клиент пишу на убунте. Ошибка в клиенте, или сервак неправильно настроен?

Да, и что конкретно делает ftp->list()?
kwisp Дата 5.6.2009, 22:13
 
Цитата(PunX @ 5.6.2009, 20:52) *
Но всёравно файл не копируется на фтп...

а зачем ты его закрыл файл то?
закрывай когда закачаешь.
SABROG Дата 5.6.2009, 21:21
 
Цитата
upfile->close();


Убери это, файл будет заливаться на фтп в момент работы приложения.
Litkevich Yuriy Дата 5.6.2009, 20:13
 
Цитата(PunX @ 5.6.2009, 23:52) *
Но всёравно файл не копируется на фтп...
А у тебя он иным способом копируется, файловым менеджером например?
PunX Дата 5.6.2009, 19:52
  Всё собрал в одно и получилось вот такое вот:
 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();}

Но всёравно файл не копируется на фтп...
PunX Дата 5.6.2009, 17:43
  Можете привести пример с аплоадом файла?
Litkevich Yuriy Дата 5.6.2009, 17:06
 
Цитата(SABROG @ 5.6.2009, 18:50) *
Если первое (т.е. как и QHttp), то QFile должен создаваться не на стеке, а в куче (через new).
ты совершенно прав:
Цитата
Make sure that the dev pointer is valid for the duration of the operation (it is safe to delete it when the commandFinished() is emitted).


и тут
Цитата(SABROG @ 5.6.2009, 20:44) *
А, еще его открыть наверно надо через QFile::open()
тоже
SABROG Дата 5.6.2009, 16:44
 
Цитата(PunX @ 5.6.2009, 17:17) *
QFile upfile (fi.fileName());


Я же тебе не говорил использовать QFileInfo для QFile. Ты обрезал путь к файлу и пытаешься загрузить файл из текущей рабочей директории, а его там наверняка нет. Сделай так:

QFile *upfile = new QFile(fileName);
ftp->put(upfile, fi.fileName());


А, еще его открыть наверно надо через QFile::open()
kwisp Дата 5.6.2009, 16:43
 
Цитата(SABROG @ 5.6.2009, 15:50) *
И возвращает ли put() управление в программу моментально или ждет пока весь файл загрузится. Если первое (т.е. как и QHttp), то QFile должен создаваться не на стеке, а в куче (через new).

так и есть.
управление возвращается а по окончании действия сигнал
void QFtp::commandFinished ( int id, bool error ) [signal]
PunX Дата 5.6.2009, 16:17
  Делаю
QString fileName = QFileDialog::getOpenFileName(this);
QFileInfo fi(fileName);
QFile upfile (fi.fileName());
ftp->put( &upfile, fi.fileName());
но опять же загрузка не идёт :(
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 13:26