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

Bibliothèques C++ Discussion :

[POCO] Telecharger un fichier Zip avec HTTPStreamFactory


Sujet :

Bibliothèques C++

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 84
    Points
    84
    Par défaut [POCO] Telecharger un fichier Zip avec HTTPStreamFactory
    Bonsoir,

    Je cherche à télécharger un fichier zip depuis un serveur web en utilisant la classe HTTPStreamFactory de la lib POCO 1.5.0.

    L'échange se fait en HTTPS.
    J'ai bien regardé l'exemple qu'ils donnent dans leur version full : il consiste à télécharger un fichier texte et à l'afficher dans la console.
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    #include "Poco/URIStreamOpener.h"
    #include "Poco/StreamCopier.h"
    #include "Poco/Path.h"
    #include "Poco/URI.h"
    #include "Poco/Exception.h"
    #include "Poco/Net/HTTPStreamFactory.h"
    #include "Poco/Net/FTPStreamFactory.h"
    #include <memory>
    #include <iostream>
     
     
    using Poco::URIStreamOpener;
    using Poco::StreamCopier;
    using Poco::Path;
    using Poco::URI;
    using Poco::Exception;
    using Poco::Net::HTTPStreamFactory;
    using Poco::Net::FTPStreamFactory;
     
    try
    {
            HTTPStreamFactory::registerFactory();
    	FTPStreamFactory::registerFactory();
     
    	URI uri(argv[1]);
    	std::auto_ptr<std::istream> pStr(URIStreamOpener::defaultOpener().open(uri));
    	StreamCopier::copyStream(*pStr.get(), std::cout);
    }
    catch (Exception& exc)
    {
    	std::cerr << exc.displayText() << std::endl;
    	return 1;
    }
    J'aimerais pouvoir écrire ce que j'ai téléchargé non dans la console mais dans un fichier binaire. Est-ce possible avec StreamCopier::copyStream ? Si oui, où puis-je trouver une démo de la chose?

    Je pense qu'en ce qui concerne la décompression du fichier Zip en question, la couche Zip m'apportera tout le support dont j'ai besoin.

    Merci par avance pour cette réponse

  2. #2
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 84
    Points
    84
    Par défaut
    Bonjour, un petit up pour ce message, si quelqu'un a une idée.

    Merci & bonne journée.

  3. #3
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Oui, bien sûr, il suffit d'utiliser le stream de ton choix à la place de std::cout.
    Un ofstream, par exemple.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  4. #4
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 84
    Points
    84
    Par défaut
    Merci pour cette réponse.

    Ca a l'air simple, je vais tester ça dans la soirée.
    http://www.cplusplus.com/doc/tutorial/files/

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 84
    Points
    84
    Par défaut
    Bonsoir,

    Par rapport à ma question originale et à la réponse apportée, l'implémentation est ralentie par l'authentification.

    En effet, je souhaiterais pouvoir permettre l'authentification HTTP Digest pour télécharger le fichier en question.

    Est-ce possible avec Poco::URIStreamOpener ?
    Je n'ai rien vu de tel dans la documentation.

    Merci par avance.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Salut! Pour la clarté (et pour augmenter tes chances d'obtenir une réponse) il est recommandé en général de faire un sujet/question...
    Pour être exact, je veut dire créer une nouvelle thread quand tu poses une question différente, sans rapport avec la question initiale (ce qui est me semble-til le cas entre le mode de sortie (console vs fichier ZIP) mode de connection (utiliser une autre API pour accélérer la connection)

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 253
    Points : 84
    Points
    84
    Par défaut
    C'est fait merci.
    http://www.developpez.net/forums/d13...istreamopener/

    Je marque donc ce topic comme "résolu".

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

Discussions similaires

  1. Décompression de fichier ZIP avec 7zip en ligne de commande
    Par jam92400 dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 20/02/2019, 14h39
  2. Réponses: 0
    Dernier message: 18/11/2013, 18h43
  3. telecharger un fichier zip qui contient une liste de fichier à supprimer
    Par joulive dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 29/07/2009, 13h54
  4. [Zip] Création d'un fichier zip avec zip.lib.php corrompue
    Par fdthierry dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 02/06/2008, 14h01
  5. Réponses: 1
    Dernier message: 18/02/2008, 07h53

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