crossplatform.ru

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


  Ответ в FTP через QNetworkAccessManager
Введите ваше имя
Подтвердите код

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

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


Последние 10 сообщений [ в обратном порядке ]
andybeg Дата 1.9.2015, 16:33
  два дня головной боли и проблема решена - оказывается работе FTP клиента мешал брандмауэр (где то в коментах нашел упоминание, что возможна такая проблема), после отключения оного всё заиграло, всем спасибо, всё решено :)
andybeg Дата 1.9.2015, 15:53
  появился прогресс, дело в том, что в качестве FTP сервера я использую CFtpServer, решил попробовать свой код на другом сервере, нагуглился CoreFTPServer64, просто первый простой, что попал под руку и о! чудо! - на него файлы передались :(
можно конечно мне посоветовать начать использовать какойньть другой сервер, но пока что это не актуально и потом другие сторонние программы вполне неплохо с ним работают :( мечаль *начал посматривать в сторону curl*
andybeg Дата 1.9.2015, 14:59
  я использую Qt 5.5 и к сожалению код подобный моему(как показало гугленье) часто в других местах работает , но у себя на машине не могу его запустить :(
wiz29 Дата 1.9.2015, 14:54
  Насколько я помню, в qt 4.8.0 была какая то ошибка в реализации ftp передачи на уровне протокола. Возможно это поможет.
Патча к сожалению под рукой не имею.
andybeg Дата 1.9.2015, 14:11
  возможно это может оказаться важным - класс, в котором реализована передача по FTP работает совместно с QML и объявлен для возможности видеть его в qml
    qmlRegisterType<Lash>("com.ttk.Lash", 1, 0, "Lash");
andybeg Дата 1.9.2015, 11:36
  продолжаю изыскания, мемного дополнил и изменил первоначальный код
    
void finished(QNetworkReply* rep){
    QString err = rep->errorString();
    file.close();
}

.................
    QUrl url("ftp://host/data");
    url.setPort(21);
    url.setUserName("test");
    url.setPassword("pass");
    url.setPort(21);
    QNetworkRequest request;
    request.setUrl(url);

    file = new QFile("file.xml");
    if(file->open(QFile::ReadOnly)){
        data = file.readAll();
        QNetworkAccessManager *uploadman = new QNetworkAccessManager(this);
connect(uploadman,SIGNAL(finished(QNetworkReply*)),this,SLOT(finished(QNetworkReply*)));
        pReply = uploadman->put(request, data);
    }

казус этого кода заключается в том, что если адрес хоста указан правильно, то всё повторяется как в первом сообщении, тоесть связь с ftp вроди бы есть, но данные не передаются, но в слот finished программа не выходит, если же есть какая то ошибка в имени хоста, то программа попадает в finished и сообщает то, да сё стряслось :(
andybeg Дата 1.9.2015, 10:32
  задача тривиальна - положить в корень FTP файл
    QUrl url("ftp://host/data");
    url.setPort(21);
    url.setUserName("test");
    url.setPassword("pass");
    url.setPort(21);
    QNetworkRequest request;
    request.setUrl(url);

    file = new QFile("file.xml");
    if(file->open(QFile::ReadOnly)){
        QNetworkAccessManager *uploadman = new QNetworkAccessManager(this);
        uploadman->put(request, file);
    }

на стороне сервера наблюдаю такой диалог
Цитата
* Sent: (Not logged in) (ClienyIP)> 220 Browser Ftp Server.
* Received: (Not logged in) (ClienyIP)> USER test
* Sent: (Not logged in) (ClienyIP)> 331 Password required for this user.
* Received: (Not logged in) (ClienyIP)> PASS pass
* Sent: test (ClienyIP)> 230 User Logged In.
* A client has logged-in as "test".
* Received: test (ClienyIP)> TYPE I
* Sent: test (ClienyIP)> 200 Binary transfer mode active.
* Received: test (ClienyIP)> PASV
* Sent: test (ClienyIP)> 227 Entering Passive Mode (HostIP,1,104)
* A client is being deleted.

при этом на сервер сторонними программами файлы заливаются :(
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.4.2024, 2:52