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

Composants VCL Delphi Discussion :

[ICS FtpClient] Date modif de fichier et listage de dossier


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Points : 75
    Points
    75
    Par défaut [ICS FtpClient] Date modif de fichier et listage de dossier
    Bonjour à tous

    J'ai en fait 2 questions sur le composant FTPClient de (l'excellente) suite ICS...

    -La première, c'est comment récupérer la date de modification d'un fichier situé sur FTP, sans devoir le télécharger

    -La deuxieme, c'est comment lister de facon sûre un dossier peu importe le type de serveur ...
    En effet lorsqu'on utilise la fonction LIST, le composant nous renvoie un fichier TXT, mais le formatage de ce fichier TXT est différent suivant le serveur (sur free ça sera pas le meme ordre dans le TXT que sur multimania, ifrance ou beaucoup d'autres par exemple).
    Donc assez gênant puisque impossible de créer une procedure pour traiter le fichier TXT et ajouter les données dans une ListView, ça marchera sur un serveur mais sur un autre ça fera n'importe quoi Quelqu'un a déjà été confronté à ce probleme et aurait trouvé une parade ?

    Merci d'avance
    A bientôt

    Ingham

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Je ne connais pas ICS, mais je peux te donner des pistes pour quelques points...

    Pour l'histoire de la date de modification, celle-ci est normalement incluse dans les informations renvoyées par LIST si ton serveur est de type UNIX. A toi donc d'analyser la réponse pour y extraire le paramètre. Mais le mieux est sans doute d'utiliser la commande MDTM conçue à cet usage, bien que tous les serveurs ne l'implémentent pas. Je ne sais pas de plus si ICS supporte cette fonctionnalité.

    Pour le problème de listage, il n'y a pas de secret : il faut faire du parsage (=de l'analyse de chaînes) ! Peut être peux tu trouver du code d'autres utilisateurs ayant développé des fonctions à cette usage prenant en charge la majorité des serveurs. Peut être qu'ICS fournit ses propres méthodes de parsage pour que tu n'ais pas besoin de t'en soucier. A voir...

    A noter que si tu utilisais Indy, tes deux problèmes seraient résolus très simplement. Cet ensemble de composants possède une librairie d'analyse convenant à la majorité des serveurs tranformant automatiquement la réponse renvoyée en une collection d'objets comportant chacune des propriétés (Nom, Date, Poids, etc., voir la FAQ Delphi sur ce site pour de plus amples détails).
    "It's more fun to compute !"

  3. #3
    Membre régulier Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Points : 75
    Points
    75
    Par défaut
    Merci pour ta réponse

    En effet Indy à l'air interessant pour ca, mais mon programme est déjà bien batti, et devoir le refaire aux 3/4 pour utiliser Indy me fait un peu peur :-? surtout que dans ICS, le multithread est géré automatiquement, pratique pour quelqu'un comme moi qui n'a jamais créé un thread (je risque de me casser pas mal la tete contre les murs :-?)

    Pour le listage, oui je me suis fais une méthode de parsage, elle marche parfaitement, mais uniquement pour les listes que renvoir Free ... les autres serveurs renvoient des listes disposées différement et du coup ma méthode ne marche plus ...
    Et j'ai pas trop envie de devoir faire une méthode de parsage pour tous les serveurs qui existent

    Et pour la date de modif, avec ICS on peut envoyer des commandes textes, comment on utilise cette commande MDTM ?

    Encore merci pour ton aide !


    Ingham

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    En effet Indy à l'air interessant pour ca, mais mon programme est déjà bien batti, et devoir le refaire aux 3/4 pour utiliser Indy me fait un peu peur
    Tu peux poser simplement un TIdAntiFreeze pour que l'affichage soit réactualisé même pendant les phases bloquantes des sockets.

    Pour le parsage des réponses, tu peux t'inspirer des méthodes exposées dans ce tutoriel :

    http://darkskull.developpez.com/d7indyftp/

    ...à l'origine pour la version 8 d'Indy qui n'avait pas de propriété DirectoryListing. Le code ne concernant pas spécialement ces composants, tu pourra l'adapter pour ICS.

    Et pour la date de modif, avec ICS on peut envoyer des commandes textes, comment on utilise cette commande MDTM ?
    Je ne sais pas comment fonctionne ICS, je te donnerais juste le principe : dériver un nouveau composant à partir du TFTPClient (ou simplement réaliser une méthode prenant en paramètre un de ces objets), cette méthode envoyant la commande "MDTM Fichier".
    Tu n'as qu'à regarder le code retourné, lever une exception s'il n'est pas égal à 213 (car la commande n'est certainement pas implémentée); sinon, récupérer le nombre renvoyé et le convertir au format TDateTime.
    "It's more fun to compute !"

  5. #5
    Membre régulier Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Points : 75
    Points
    75
    Par défaut
    C'est nickel tout ca merci

    Juste un dernière question, c'est quoi la commande FTP pour changer la date de modification d'un fichier (afin que le fichier uploadé garde la meme date de modif que le fichier local )
    Merci d'avance

    Ingham

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Pour que la commande que tu cherches, il s'agit de MDTM également. Seulement, est fourni une date à appliquer avec le fichier passé en argument. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MDTM<sp>YYYYMMDDHHMMSS<sp>filename
    Attention. Cette commande n'est pas standard. Elle est prise en charge de manière différente par les serveurs FTP... Donc selon le serveur FTP avec lequel tu dialogue, cette commande peut ou non ne pas marcher, pour la bonne raison qu'elle n'est pas décrite dans la RFC du protocole FTP, mais seulement dans des brouillons d'extensions de ce protocole. De manière purement conforme au protocole, il n'y aucune commande qui permet de faire cela...
    "It's more fun to compute !"

  7. #7
    Membre régulier Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Points : 75
    Points
    75
    Par défaut
    Merci pour tout

    C'est dommage qu'il n'existe aucune commande conforme au protocole FTP
    Je suppose qu'il n'y a donc aucun moyen pour faire en sorte que le fichier que j'upload garde la même date de modification que le fichier original ?

    Encore merci en tout cas

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Citation Envoyé par Ingham
    Je suppose qu'il n'y a donc aucun moyen pour faire en sorte que le fichier que j'upload garde la même date de modification que le fichier original ?
    Je ne crois pas, en tout cas pas de manière standardisée. Si tu veux faire cela, à la limite tu crée un serveur FTP et tu implémente toi même les commandes permettant de gérer les dates. Mais celà n'est pas possible bien sûr si tu souhaite créer simplement un client compatible avec les serveurs existants...
    "It's more fun to compute !"

  9. #9
    Membre régulier Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Points : 75
    Points
    75
    Par défaut
    Oui en effet c'est un client compatibles avec les serveurs existants tels que free, multimania et compagnie :/
    Bon ben tant pis
    Merci pour ton aide précieuse en tout cas!

    A+

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

Discussions similaires

  1. [VB6] Date modification fichier FTP
    Par KrusK dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/06/2006, 10h41
  2. FTP, conserver la date de modification du fichier telechargé
    Par tad20 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/06/2006, 13h02
  3. Date de modification de fichier
    Par nellynew dans le forum Access
    Réponses: 2
    Dernier message: 02/06/2006, 13h40
  4. date de modification de fichier sous windows
    Par brisbo dans le forum Windows
    Réponses: 2
    Dernier message: 05/05/2006, 00h45
  5. [MFC] recupération date modif fichier
    Par Gothico dans le forum MFC
    Réponses: 7
    Dernier message: 21/01/2005, 19h47

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