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

Langage Delphi Discussion :

Uploader des fichiers par NMFTP


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut Uploader des fichiers par NMFTP
    Salut à tous,
    Dans mon application, j'ai mis en place une procédure de téléchargement de fichiers par NMFTP.
    Lorsque je veux instaurer le même système pour uploader les mêmes fichiers après modification, j'ai une erreur disant que le fichier sur le pc ne peut être ouvert. Je libére le datasource avant upload.
    Est-ce du à la réservation des fichiers en mémoire ou une autre astuce.
    Si c'est cela comment contourner le problème???

    Merci

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 577
    Points : 25 217
    Points
    25 217
    Par défaut
    Quel est le rapport entre le bon vieux TNMFTP et un DataSource ? tu utilise un TClientDataSet pour générer un XML ? as tu mis le Close après le SaveToFile
    Essaye un petit Sleep avant de faire l'upload par exemple, détruit l'objet qui écrit le fichier si c'est un TFileStream, ...

    Pour ma part, j'ai utilisé ce composant, en fait, un AS400 aspirait un fichier, moi je mettais dans une liste de travail des fichiers à envoyer, dès que l'AS400 avait supprimé le fichier, j'envoyais le suivant, si le fichier était encore là, j'attendais 1 secondes, et je retentais ...

    en gros, dans l'ordre, j'utilisais les méthodes de TNMFTP
    Connected, ChangeDir, NList, Upload, DoCommand, Disconnect, ... j'ai par contre vachement géré d'exception, avec tout un sytème de tentative, l'objet étant utilisé dans un thread, les fichiers générés dans un autre ...

  3. #3
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    Ta réponse est digne d'un expert mais moi je suis loin de l'être.
    Pour t'expliquer, mon appli gère une base de données de clients dont seul moi édite les données qui sont mises à dispo pour les autres collègues sur un site FTP. Je souhaite qu'ils puissent les charger en restant dans l'application. Pour cela je libérais le datasource pensant libérer le fichier *.db et les index.
    Mais je constate que l'upload me donne une erreur qui me fait penser à une réservation des fichiers comme s'ils étaient encore occupés. Cen'est pas le cas lorsque moi je download vers le ftp.
    Sinon la procédure est celle-ci, le collègue ouvre l'appli, par un menu se connecte, vérifie dans un ini si j'ai modifié la base de données et au besoin l'upload après avoir fermé le data source pour libérer les fichiers, se déconnecte ensuite et réactive le datasource et met à jour son ini sur base de son téléchargement.
    Ne faut-il pas faire comme pour un *.ini libérer les fichiers par une commande du style "mesfichiers.free" ??

    merci

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 577
    Points : 25 217
    Points
    25 217
    Par défaut
    Tu confonds le DataSource, qui un connecteur entre un DataSet et les Controls et le DataSet lui même (TTable, TQuery, ...), ... un fichier .db, c'est quoi de Paradox, donc BDE, tu as un risque que le BDE mettent un peu de temps pour cloturer l'ouverture de la Base, je te conseille de lier tous tes DataSet à un TDatabase au lieu de mettre directement le dossier ou alias, et d'affecter False à Connected du DataBase ... j'ai pas fait de BDE depuis pas mal de temps ...

  5. #5
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    Je te remercie.
    L'aide que je viens de consulter parle dans le même sens que toi.
    Cela me donne un gros travail car je dois rebalayer l'ensemble de mon code et modifier tous les dataset. J'espère ne pas avoir de plantage après...
    Je m'en occuperai dans les prochains jours et ne manquerai pas le tag "résolu" si c'est le cas.

    Le "Savoir" est bien mais le partager est mieux ! Merci

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 577
    Points : 25 217
    Points
    25 217
    Par défaut
    Profites-en pour mettre un place une Factory de DataSet, c'est une Design Patterns, assez pratique, on l'a trouve sur le forum, sous les noms GetQuery ou GetTable par exemple ... cela affecte la connextion, les paramètres par défaut, un SQL et l'ouvre automatiquement ...

  7. #7
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    J'ai trouvé une solution plus facile pour mes compétences.
    "Session.Close;"
    La libération est instantanée.
    Tout fonctionne bien.
    Merci encore.

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

Discussions similaires

  1. [Upload] Upload de fichier par formulaire
    Par discogarden dans le forum Langage
    Réponses: 4
    Dernier message: 31/03/2006, 19h17
  2. [Upload] upload de fichier par ftp
    Par sami_c dans le forum Langage
    Réponses: 3
    Dernier message: 22/03/2006, 11h18
  3. Réponses: 1
    Dernier message: 14/02/2006, 00h40
  4. Uploader des fichiers via ssh
    Par Michaël dans le forum Réseau
    Réponses: 3
    Dernier message: 13/05/2005, 20h47
  5. Upload de fichier par XMLHTTP
    Par Immobilis dans le forum ASP
    Réponses: 6
    Dernier message: 21/01/2005, 17h02

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