Client FTP avec Qt

lostsouldark Messages postés 21 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 1 mai 2013 - 14 févr. 2011 à 13:36
lostsouldark Messages postés 21 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 1 mai 2013 - 15 févr. 2011 à 03:56
bonjour,

je debute depuis quelque temps en c++ / Qt, sous gnu/linux.
j'essaye de faire un petit client ftp, mais je n'y comprends pas grand chose...

j'ai un bout de code deja :

QFtp *ftp = new QFtp(this);
QUrl url(ui->lineEdit_3->text());

QString pass = ui->lineEdit_2->text();
QString log = ui->lineEdit->text();
QString fichier = ui->lineEdit_4->text();

ftp->login(log, pass);
ftp->connectToHost(url.host(), url.port(21));


si quelqu'un pouvait m'aider un peu, svp.
merci d'avance,
tres cordialement,

LostSoulDark

2 réponses

pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 10
14 févr. 2011 à 20:29
Voici un bout de code tiré d'un livre, j'espère qu'il pourra t'aider.
C'est l'implémentation d'une classe "FtpGet", elle hérite de QObject.
On y retrouve la connexion et la réception des données."ftpDone" est un slots et "getFile" est une fonction publique.


#include <QtCore>
#include <QtNetwork>
#include 

#include "ftpget.h"

using namespace std;

FtpGet::FtpGet(QObject *parent)
    : QObject(parent)
{
    connect(&ftp, SIGNAL(done(bool)), this, SLOT(ftpDone(bool)));
}

bool FtpGet::getFile(const QUrl &url)
{
    if (!url.isValid()) {
        cerr << "Error: Invalid URL" << endl;
        return false;
    }

    if (url.scheme() != "ftp") {
        cerr << "Error: URL must start with 'ftp:'" << endl;
        return false;
    }

    if (url.path().isEmpty()) {
        cerr << "Error: URL has no path" << endl;
        return false;
    }

    QString localFileName = QFileInfo(url.path()).fileName();
    if (localFileName.isEmpty())
        localFileName = "ftpget.out";

    file.setFileName(localFileName);
    if (!file.open(QIODevice::WriteOnly)) {
        cerr << "Error: Cannot open " << qPrintable(file.fileName())
             << " for writing: " << qPrintable(file.errorString())
             << endl;
        return false;
    }

    ftp.connectToHost(url.host(), url.port(21));
    ftp.login();
    ftp.get(url.path(), &file);
    ftp.close();
    return true;
}

void FtpGet::ftpDone(bool error)
{
    if (error) {
        cerr << "Error: " << qPrintable(ftp.errorString()) << endl;
    } else {
        cerr << "File downloaded as " << qPrintable(file.fileName())
             << endl;
    }
    file.close();
    emit done();
}




C++dialement,
Pop70
0
Rejoignez-nous