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

API standards et tierces Java Discussion :

[FTP] Reprise sur erreur


Sujet :

API standards et tierces Java

  1. #1
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut [FTP] Reprise sur erreur
    Bonjour,

    mon objectif est de télécharger sur mon serveur un fichier via FTP.
    J'ai vu qu'il y avait quelques API (FTP4J, common net de apache, classes utilitaire de java etc) de disponible.
    Mais je ne trouve pas dans les docs de ces API comment faire une reprise sur erreur. Par exemple dans le cas où j'ai une coupure réseau et que je n'ai pas pu télécharger qu'une partie du fichier, je voulais savoir comment faire pour récupérer le reste du fichier. Quand don utilise un client FTP on voit souvent des fichiers avec des extensions filepart, je voudrais reproduire un comportement similaire

    Si vous avez une idée d'API qui sache faire ça je suis preneur ...
    merci

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    La méthode download de FtpClient de FTP4J à un paramètre restartAt (Avec Apache FTP, il y a setRestartOffset()).

    Ensuite l'algo est assez simple :

    à chaque téléchargement de fichier (mettons truc.machin pour l'exemple)

    • tu enregistres dans un fichier partialdownload (par exemple), se trouvant dans le dossier de destination, le nom du fichier (donc truc.machin), associé aux informations de la source (emplacement distant, nom, url, etc... tout ce qui te permettra de redémarrer un téléchargement).
    • ensuite, tu lances le téléchargement du fichier vers truc.machin.filepart
    • à la fin du téléchargement, tu supprimes le fichier truc.machin déjà éventuellement présent (ou tu le renommes en .bak pour encore plus de sécurité), tu renommes truc.machin.filepart en truc.machin et tu supprimes les informations de truc.machin du fichier partialdownload (et tu supprimes le .bak le cas échéant)


    Lorsqu'on relance l'appli, tu lis le fichier partialdownload et le parcourt : il contient tous les noms de fichiers qui n'ont pas aboutis. S'il existe un .filepart correspondant, tu relances le téléchargement (la taille du fichier est l'offset de restart). S'il n'en existe pas, c'est que le plantage à eu lieu non pas pendant le téléchargement, mais dans ton application (avant de démarrer le téléchargement, ou après avoir renommer à la fin).

    Tu peux simplifier si ton utilitaires de téléchargement télécharge toujours depuis la même source (même serveur ftp) et sans changer le nom du fichier (même nom local et distant) : dans ce cas, le .filepart est suffisant pour avoir toutes les informations, et au relancement de l'application de téléchargement, il suffit de chercher tous les .filepart situés dans le dossier local (il y a éventuellement un problème si le fichier distant porte l'extension filepart, mais dans ce cas le fichier qui semble être celui d'origine n'existe pas dans la source, donc il suffit d'ignorer les .filepart qui n'ont pas/plus de source).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Salut

    ok merci pour l'info
    J'essaie d'implémenter ça et je te redis
    Par expérience tu recommandes quelle API ?


    Merci encore

  4. #4
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    j'ai essayé avec FTP4J l'implémentation est simple surtout en implémentant le listener de l'interface FTPDataTransferListener
    merci

  5. #5
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Juste pour partager l’expérience avec ceux qui ont galéré sur un problème de reprise. Il faut analyser les commandes FTP échangées entre votre client et votre serveur (avec Wireshark par exemple)
    Dans le cas du serveur FTP free la reprise ne fonctionne pas avec FTP4J car la librairie envoies la commande REST qui permet de recommencer à partir d'un point spécifique.
    Il faut donc trouver une solution alternative

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

Discussions similaires

  1. Téléchargement fichier avec reprise sur erreur
    Par Hideman85 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 20/02/2015, 19h53
  2. Update du schéma de BDD et reprise sur erreur
    Par Logan Mauzaize dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 04/12/2012, 14h47
  3. Firebird, transactions et méthodes de reprises sur erreurs
    Par LorisB dans le forum Connexion aux bases de données
    Réponses: 9
    Dernier message: 17/06/2009, 18h11
  4. Ftp reprise sur échec
    Par Grouik dans le forum Delphi
    Réponses: 1
    Dernier message: 25/10/2006, 12h36
  5. serveur WEB,FTP,MAIL sur meme machine C raisonnable ?
    Par littleman dans le forum Serveurs (Apache, IIS,...)
    Réponses: 5
    Dernier message: 07/07/2004, 00h01

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