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 :
Le traitement se passe parfaitement au premier envoie, par contre le deuxième envoi échoue dès le 2è sous-dossier. Exemple :
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("/");
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 **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).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 **
Je ne comprend pas comment le système au 2è échange comprend que dossier est bien un dossier mais pas pour les sous-dossiersJ'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.![]()
Partager