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

ASP.NET Discussion :

Récupérer un flux de fichier d'un serveur


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 71
    Par défaut Récupérer un flux de fichier d'un serveur
    Bonjour,

    j'aimerais pouvoir récupérer les "pièces jointes" d'un utilisateur, pour cela j'ai un updatePanel, dans lequel j'ai un repeater qui se charge de récupérer des données d'un serveur oracle (la liste des noms de fichiers de l'utilisateur).

    Si l'utilisateur clique sur le bouton "voir", j'envoie au serveur l'id de la pièce jointe et le serveur m'envoie en réponse un flux de données du fichier correspondant .... Mais je n'arrive pas à récupérer ce flux en tant que fichier.

    Je stocke le flux reçu par le serveur dans une "MemoryStream", et voilà le code avec lequel j'avais essayé mais sans succès :

    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
    else if (b.CommandName == "Voir")                // bouton de lecture de PJ demande
                    {
                        string chaine = "<PJ><NumPJ>" + b.CommandArgument + "</NumPJ></PJ>";
                        MemoryStream m = PJ.Receive(chaine, "PJ_LECTURE");
     
                        RepeaterItem ri = b.Parent as RepeaterItem;
                        if (ri != null)
                        {
                            Label l = (Label)ri.FindControl("nom"); // nom du fichier
                            if (l != null)
                            {
                                Response.ContentType = "application/octet-stream";
                                Response.AddHeader("Content-Disposition", "attachment; filename=" + l.Text);
                                Response.BinaryWrite(m.GetBuffer());
                                Response.Flush();
                            }
                        }
                    }
    Rien ne se passe quand je clique sur le bouton, je m'attendais à ce que le navigateur me demande si je voulais l'ouvrir ou l'enregistrer comme lors d'un download...

    Merci !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 71
    Par défaut
    Je viens de tester avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Byte[] byteArray = m.GetBuffer();
                                m.Flush(); m.Close();
                                Response.BufferOutput = true;
                                Response.Clear();
                                Response.ClearHeaders();
                                Response.ContentType = "application/octet-stream";
                                Response.AddHeader("Content-Disposition", "attachment; filename=" + l.Text);
                                Response.BinaryWrite(byteArray);
                                m.WriteTo(Response.OutputStream);
                                Response.Flush();
                                Response.End();
    mais en mettant les infos en dur, dans une page vide, et ça marche !

    Ca serait l'update Panel le souci ?! pourtant le bouton a bien sa propriété causesValidation à true !

    Si quelqu'un a une idée ... au pire ca peut se faire par popup je pense, je vais voir de ce côté si c'est possible !

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/03/2008, 01h14
  2. Réponses: 1
    Dernier message: 24/01/2008, 11h05
  3. Récupérer un fichier sur un serveur HTTP
    Par Medivh dans le forum WinDev
    Réponses: 2
    Dernier message: 01/04/2007, 22h28
  4. récupérer un fichier sur un serveur distant
    Par Phiss dans le forum ASP
    Réponses: 7
    Dernier message: 17/05/2006, 18h02
  5. [WebLogic] Récupérer un fichier sur le serveur...
    Par T.NightGlow dans le forum Weblogic
    Réponses: 1
    Dernier message: 29/06/2005, 15h32

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