IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

QFtp + recuperation de fichiers.


Sujet :

Qt

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 45
    Points : 27
    Points
    27
    Par défaut QFtp + recuperation de fichiers.
    Salut a tous,

    Voila je cherche a faire une application qui aurait pour but de recuperé 2 fichiers dans le dossier "rec" de mon ftp.
    Cela fonctionne mais que quand je met fin au processus :/
    C'est a dire que lorsque je lance mon programme, il me créé 2 fichiers de 0 octets et quand je termine le processus la j'ai mes bon fichiers...
    Je voudrais avoir mes fichiers sans avoir a faire fin de processus...
    Voici mon code :

    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <QtNetwork>
    #include "reseau.h"
    #include <QApplication>
    #include <QFile>
     
    int main(int argc, char* argv[])
    {
        QApplication app(argc, argv);
     
        reseau recuperation;
     
        return app.exec();
    }
    reseau.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #include <QtNetwork>
    #include "reseau.h"
    #include <QWidget>
    #include <QFile>
     
    reseau::reseau()
    {
     
        fichier = new QFile("test1.txt");
        fichier2 = new QFile("test2.txt");
        connectToHost("ftp");
        login("user", "password");
        cd("rec");
     
        if (!fichier->open(QIODevice::WriteOnly))
        {
        delete fichier;
        return;
        }
     
        get("test1.txt", fichier, QFtp::Ascii);
     
        if (!fichier2->open(QIODevice::WriteOnly))
        {
        delete fichier2;
        return;
        }
     
        get("test2.txt", fichier2, QFtp::Ascii);
     
        close();
    }
    reseau.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #ifndef RESEAU_H_INCLUDED
    #define RESEAU_H_INCLUDED
     
    #include <QtNetwork>
    #include <QWidget>
    #include <QFile>
     
    class reseau : public QFtp
    {
     
        Q_OBJECT
     
    public:
    reseau();
     
    protected:
     
    private:
    QFile *fichier;
    QFile *fichier2;
     
    private slots:
     
    };
    #endif // RESEAU_H_INCLUDED
    Merci d'avance pour votre aide...
    Cordialement jyz93,

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    SAlut.
    Il faut que tu ferme tes fichiers, une fois leurs téléchargement finie.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 45
    Points : 27
    Points
    27
    Par défaut
    Bon admettons j'ai un fichier (ce sera plus simple a comprendre)
    Voici mon nouveau code que j'ai modifié d'après la piste que tu m'a donné et la doc (en gardant le même main) :

    reseau.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #include <QtNetwork>
    #include "reseau.h"
    #include <QWidget>
    #include <QFile>
     
    reseau::reseau()
    {
     
        ftp = new QFtp(this);
        fichier = new QFile("test.txt");
        ftp->connectToHost("");
        ftp->login("", "");   // Je me connecte
        ftp->cd("rec");
     
        if (!fichier->open(QIODevice::WriteOnly))     // J'ouvre mon fichier
        {
        delete fichier;
        return;
        }
     
        ftp->get("test.txt", fichier, QFtp::Ascii);    // Je télécharge mon fichier "test.txt"
        QObject::connect(ftp, SIGNAL(commandFinished()), this, SLOT(slot()));   //Je me connecte mon signal "commandFinished" a mon slot "slot"
     
        ftp->close();     
    }
     
    void reseau::slot()
    {
     
     
        if (ftp->currentCommand() == QFtp::Get)
        {
        fichier->close();     // Je ferme mon fichier 
        delete fichier;
        }
     
     
     
    }
    reseau.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #ifndef RESEAU_H_INCLUDED
    #define RESEAU_H_INCLUDED
     
    #include <QtNetwork>
    #include <QWidget>
    #include <QFile>
     
    class reseau : public QWidget
    {
     
        Q_OBJECT
     
    public:
    reseau();
     
    protected:
     
    private:
    QFtp *ftp;
    QFile *fichier;
     
    public slots:
    void slot();
     
    };
    #endif // RESEAU_H_INCLUDED
    Toujours le même probléme je comprend pas... :/
    Pourtant j'ai bien connécté le signal commandFinished() de mon QFtp avec un slot qui ferme mon fichier...

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    le signal commandFinished à des parmètres
    Le premier est un ID retourné par ton get et le second et un bool qui t'indique s'il y as eu une erreur

Discussions similaires

  1. Récuperer les fichiers d'une autre machine sur une autre
    Par khalidlyon dans le forum Réseau
    Réponses: 1
    Dernier message: 09/11/2004, 13h40
  2. Récupérer un fichier suite à l'utilisation de la commande rm
    Par Kimael dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 02/10/2004, 18h34
  3. recupere un fichier effacer
    Par Mr_Chut dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 27/04/2004, 19h40
  4. Réponses: 4
    Dernier message: 18/09/2003, 10h06
  5. Recuperation du fichier xml
    Par Geulderack dans le forum XMLRAD
    Réponses: 10
    Dernier message: 28/02/2003, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo