Russian Qt Forum

Qt => Вопросы новичков => Тема начата: qwyllum от Декабрь 22, 2014, 10:12



Название: простейший скрипт закачки файла по FTP, подскажите что делаю не так
Отправлено: qwyllum от Декабрь 22, 2014, 10:12
Здравствуйте. Впервые работаю с сетью, не могу понять, что делаю не так:

Код:


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    QNetworkAccessManager* manager = new QNetworkAccessManager(this);
     QFile* file = new QFile("d:\\somefile.txt");

     if(!file->exists())
     {
         qDebug()<<"not found file";
         exit(-1);
     }

     if( file->open(QIODevice::ReadOnly))
     {

     qDebug()<<"file: "<<file;

     QUrl url("ftp://w05.hosterby.com/path/somefile.txt");
     url.setUserName("name");
     url.setPassword("pass");

    reply =manager->put(QNetworkRequest(url), file);

     connect(reply, SIGNAL(uploadProgress(qint64,qint64)), this,
   SLOT(uploadProgress()));
     connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this,
   SLOT(error()));
     connect(reply, SIGNAL(finished()), this, SLOT(finished()));
    }
     else
     {
         qDebug()<<"error reading file";
     }


    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::finished()
{
    qDebug()<<reply->readAll();
    qDebug()<<reply->errorString();
}

void MainWindow::error()
{
    qDebug()<<"error";
    qDebug()<<reply->errorString();
}

void MainWindow::uploadProgress()
{
    qDebug()<<"upload in progress";
}


При загрузке выдается следующее:
file:  QFile(0x122cfb78)
QIODevice::read: device not open
error
"Error while uploading ftp://user:pass@w05.hosterby.com/path/somefile.txt: Uploading file failed:
Access is denied. "
upload in progress
""
"Error while uploading ftp://user:pass@w05.hosterby.com/path/somefile.txt: Uploading file failed:
Access is denied. "


С-но, смущает надпись QIODevice::read: device not open, т.к. файл точно существует. Второй вопрос с правами - пароль и логин точно правильные, т.к. раньше выдавалась ошибка авторизации. Если я что-то делаю не так, может кто-нибудь подскажет решение? Нужен просто скрипт, который закачает один файл на ftp-сервер. Буду очень благодарен за помощь.


Название: Re: простейший скрипт закачки файла по FTP, подскажите что делаю не так
Отправлено: Johnik от Декабрь 22, 2014, 10:24
установка порта не поможет?
Код:
url.setPort(21);


Название: Re: простейший скрипт закачки файла по FTP, подскажите что делаю не так
Отправлено: qwyllum от Декабрь 22, 2014, 10:33
установка порта не поможет?


Спасибо за ответ! К сожалению, не помогло :(


Название: Re: простейший скрипт закачки файла по FTP, подскажите что делаю не так
Отправлено: PimenS от Декабрь 22, 2014, 11:30
Попробуй reply->readAll(); поместить в void MainWindow::uploadProgress()