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

C# Discussion :

Dowload de fichier en Rest (coté client)


Sujet :

C#

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Dowload de fichier en Rest (coté client)
    Bonjour

    Coté serveur j'ai une methode qui me prepare un download de fichier

    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
        [Route("downloaddocheadpdf/{docHeadId}")]
        [HttpGet]
        public HttpResponseMessage DownloadDocHeadPdf(int docHeadId)
        {
          string docnumber;
          byte[] file = DocHeaderBiz.DownloadDocHeaderPdf(docHeadId, out docnumber);
          var response = new HttpResponseMessage(HttpStatusCode.OK)
          {
            Content = new StreamContent(new MemoryStream(file), file.Length),
          };
          response.Content.Headers.Add("Access-Control-Expose-Headers", "content-disposition");
          response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
          {
            FileName = docnumber + ".pdf"
          };
     
          return response;
        }
    Et coté client j'appelle cette méthode


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          string Req = string.Format("api/docheader/downloaddocheadpdf/{0}", DocHeadId);
          var request = getRequest(Req, Method.GET);
          var response = client.Execute<HttpResponseMessage>(request);
    Jusque là tout va bien !
    La methode du serveur est bien appelée
    La réponse est correctement garnie (coté serveur)

    Mais si j'analyse la reponse coté client rien va plus
    Le response.data est null
    Par contre le watch de response me montre bien un content qui ressemble a ce qu'on attends qui mais qui a l'air corrompu
    Et j'y vois une erreur "Data at the root level is invalid. Line 1, position 1."

    Donc a priori je ne sais pas comment utiliser ma reponse ou faire en sorte qu'elle soit utilisable
    Le but bien entendu etant de resauver le fichier coté client

    Je fais peut etre une grosse betise qq part mais tout est dans le code ci joint !
    Quelqu'un a une idée ?

    Merci de votre aide

  2. #2
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Points : 10 543
    Points
    10 543
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Comment est défini le contrôleur dans lequel réside cette méthode ? Il hérite bien ApiController et pas de Controller tout court ?

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Bonjour François

    Merci pout ton aide
    Oui il hérite bien de APIControleur

    Mais il y a une couche RestSharp

    Entetemps j'ai trouvé deux solution

    // La meilleure a mon avis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IRestResponse response = client.Execute(request);
    // Maintenant le challenge est de recuperer le nom du fichier planqué dans les Headers de response


    // Autre possibilité plus directe mais qui me donne un resultat tout nu sans nom de fichier original
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Byte[] AA = client.DownloadData(request);

Discussions similaires

  1. traitement de fichier de données coté client
    Par triaguae dans le forum Débuter
    Réponses: 1
    Dernier message: 18/03/2012, 21h32
  2. Envoyer fichier vers le coté client
    Par delph1983 dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 25/08/2009, 09h31
  3. exécution d'un script d'upload de fichier coté client
    Par cyril911 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 02/04/2007, 18h38
  4. [Techno] Connaitre la taille d'un fichier coté client
    Par K-Kaï dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 15/05/2006, 15h00
  5. ouvrir un fichier excel coté client
    Par youss dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 27/07/2005, 14h42

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