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

Réseau Discussion :

QFtp : arborescence avec isDir()


Sujet :

Réseau

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut QFtp : arborescence avec isDir()
    Salut à tous,
    Soucis qui me prend la tête, je vous explique d'abord puis je mets le code :
    Mon objectif est que lors d'un put (upload de la machine cliente au serveur FTP), l'arborescence du fichier sélectionné soit gardé. Pour cela, je veux donc créer un par un les dossiers qui n'existe pas sur le serveur. J'utilise la fonction isDir() pour connaitre si le fichier existe ou non [la fonction list() étant utilisé pour la vue QTreeView, son utilisation est donc très malvenue].
    Voici donc le code :
    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
    // select path from homepath local
    QString mypathfile = file.absolutePath().trimmed();
    QRegExp rxreplace("^"+QDir::homePath());
    mypathfile.replace(rxreplace,"");
    mypathfile.replace(0,1,"");
    qDebug() << "mypathfile : " + mypathfile;
    //create tree
    foreach (QString s, mypathfile.split("/")) {
          if(!isDir(index(s))){
                 qDebug() << "pas un dir : " + s;
                 connection.mkdir(s);
          } else {
                 qDebug() << "dir : " + s;
          }
          connection.cd(s);
    }
    // upload
    UploadFile(file.absoluteFilePath());
    // reset (espace chrooté)
    connection.cd("/");
    Le traitement se passe parfaitement au premier envoie, par contre le deuxième envoi échoue dès le 2è sous-dossier. Exemple :

    1er échange (copie du fichier /home/toto/dossier/sous-dossier/sous-dossier2/fichier)
    mypathfile : /dossier/sous-dossier/sous-dossier2
    pas un dir : dossier
    pas un dir : sous-dossier
    pas un dir : sous-dossier2
    ** Le fichier est bien copié dans l'arborescence **
    2è échange (copie du fichier /home/toto/dossier/sous-dossier/sous-dossier2/fichier2)
    mypathfile : /dossier/sous-dossier/sous-dossier2
    dir : dossier
    pas un dir : sous-dossier
    pas un dir : sous-dossier2
    ** crash **
    Le crash apparaît car comme il ne comprend pas que le dossier existe déjà, il le recrée et donc crash (déjà existant).
    Je ne comprend pas comment le système au 2è échange comprend que dossier est bien un dossier mais pas pour les sous-dossiers J'espère avoir été le plus clair possible dans mon explication.
    Je précise que la fonction UploadFile fonctionne bien.

    Merci beaucoup pour votre aide.
    Dernière modification par Invité ; 06/02/2014 à 17h31. Motif: résolu

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 155
    Billets dans le blog
    151
    Par défaut
    Bonjour,

    Êtes vous sur que le crash vient à cause du cas que vous annoncez ? Vous l'avez débogué ?

    Pourquoi ne pas garder une table de l'arborescence en local ? Afin de ne pas faire un mkdir sur des choses qui existent déjà ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci de ta réponse LittleWhite.
    J'ai finalement fait ce que je voulais par une autre méthode.
    En utilisant proFTPd on peut exécuter des scripts avant/après des commandes. Pour garder l'arborescence j'ai donc compressé le fichier/dossier avec le chemin, et après l'envoi, à la réception, j'exécute automatiquement un script qui décompresse et supprime le zippé.
    J'ai donc exactement ce que je voulais.


    Résolu !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. arborescence avec lien
    Par xorax dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/11/2006, 18h53
  2. [PHP-JS] probleme arborescence avec require
    Par nicerico dans le forum Langage
    Réponses: 8
    Dernier message: 08/11/2006, 09h10
  3. Créer une arborescence avec XSL
    Par kobe dans le forum XSL/XSLT/XPATH
    Réponses: 19
    Dernier message: 13/06/2006, 09h54
  4. Réponses: 3
    Dernier message: 28/03/2006, 10h52
  5. copie d'une arborescence avec excel vb
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/11/2005, 08h31

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