crossplatform.ru

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

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> QFtp, как закачать файл?
Sam
  опции профиля:
сообщение 16.1.2008, 16:51
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 15
Регистрация: 28.11.2007
Пользователь №: 28

Спасибо сказали: 0 раз(а)




Репутация:   0  


Делаю так:
    QString szFile = "d:\\test.pdf";
    QFtp ftp;
    QFile file( szFile);
    if( !file.open( QIODevice::ReadOnly))
    {
        QMessageBox::information( 0,
                                  QObject::tr("FTP"),
                                  QObject::tr("Can'not open file: %1 for read.").arg( szFile));
        return -1;
    }

    ftp.connectToHost( "server.ru", 21);
    ftp.login( "user", "password");
    ftp.put( &file, szFile);
    
    ftp.close();
    file.close();

    return 0;
Но файл почему-то не появляется на ftp. :(
И еще не могу найти как сменить директорию, в которую нужно сохранить файл.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
archimed7592
  опции профиля:
сообщение 16.1.2008, 17:04
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 127
Регистрация: 27.12.2007
Из: Moscow
Пользователь №: 56

Спасибо сказали: 0 раз(а)




Репутация:   0  


Нужно дожидаться сигнала done.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sam
  опции профиля:
сообщение 16.1.2008, 17:13
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 15
Регистрация: 28.11.2007
Пользователь №: 28

Спасибо сказали: 0 раз(а)




Репутация:   0  


Не понял как в моем случае его дождаться?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
archimed7592
  опции профиля:
сообщение 16.1.2008, 17:21
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 127
Регистрация: 27.12.2007
Из: Moscow
Пользователь №: 56

Спасибо сказали: 0 раз(а)




Репутация:   0  


Как в твоём - не знаю. Примитивный пример(правда с HTTP):
CODE

// main.hpp
#ifndef main_hpp_included
#define main_hpp_included

#include <ostream>
#include <iostream>

#include <QObject>
#include <QHttp>

class Test
: public QObject
{
Q_OBJECT
public:
Test(QObject *parent = 0)
: QObject(parent)
{
connect(&http, SIGNAL(sslErrors ( const QList<QSslError> & )), &http, SLOT(ignoreSslErrors ()));
connect(&http, SIGNAL(done ( bool )), this, SLOT(done ( bool ))); /// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}
QHttp http;
private slots:
void done(bool error)
{
std::cout << "done(" << error << ")" << std::endl;
emit allDone();
}
signals:
void allDone();
};
#endif

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// main.cpp
#include <ostream>
#include <iostream>

#include <QtCore>
#include <QtNetwork>

#include <main.hpp>

int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
Test test;
QObject::connect(&test, SIGNAL(allDone()), &app, SLOT(quit()));
std::cout << "hi from main" << std::endl;
test.http.setHost("gmail.com", QHttp::ConnectionModeHttps);
test.http.get("/");

return app.exec();
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sam
  опции профиля:
сообщение 16.1.2008, 17:26
Сообщение #5


Студент
*

Группа: Новичок
Сообщений: 15
Регистрация: 28.11.2007
Пользователь №: 28

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо, попробую разобраться... :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Alexandr_*
сообщение 26.1.2008, 21:12
Сообщение #6





Гости








    


Все просто. класс QFtp работает асинхронно. те он еще только с сервером начинает соединяться, а у тебя уже файл закрыт. тебе надо дождаться записи, как сказано выше и только потом закрыть файл. я на эту тему скоро заметку напишу на qt-rus.wikidot.com
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Alexandr_*
сообщение 27.1.2008, 15:40
Сообщение #7





Гости








    


Цитата(Alexandr @ 26.1.2008, 21:12) *
напишу на qt-rus.wikidot.com

Разместил.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PunX
  опции профиля:
сообщение 5.6.2009, 13:31
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 12.4.2009
Из: Димитровград
Пользователь №: 676

Спасибо сказали: 0 раз(а)




Репутация:   0  


День добрый, есть такой вопрос, я получаю имя и путь файла через:
QString fileName = QFileDialog::getOpenFileName(this);

Как теперь загрузить этот файл на фтп?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 5.6.2009, 13:39
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Открыть этот файл через QFile и передать в метод int QFtp::put ( QIODevice * dev, const QString & file, TransferType type = Binary )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PunX
  опции профиля:
сообщение 5.6.2009, 14:01
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 12.4.2009
Из: Димитровград
Пользователь №: 676

Спасибо сказали: 0 раз(а)




Репутация:   0  


Сделал таким вот образом, но фал не появляется на фтп
void FtpWindow::uploadFile() {
        QString fileName = QFileDialog::getOpenFileName(this);
        QString file = fileName;
        QFile upfile (file);
        ftp->put( &upfile, file);
        upfile.close();

П.С. извините за глупые вопросы :pardon:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V   1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.11.2024, 2:56