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 :

Envoyer un fichier du serveur vers le client


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 94
    Points : 85
    Points
    85
    Par défaut Envoyer un fichier du serveur vers le client
    Bonjour,

    J'ai des fichiers stockés ds des blobs que je cherche à envoyer au client sur demande. J'affiche chaque nom de fichier sous forme de lien vers une page qui l'envoie. voici le bout de code de la méthode Page_Load qui envoie le fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                byte[] abyteFile;
                Response.ContentType = "application/octet-stream";
                Response.AddHeader("content-disposition", "attachment; filename=" + sFilename);
                //Response.AddHeader("content-length", sLength);
     
                abyteFile = GetBytes("AttachedFile");
                Response.BinaryWrite(abyteFile);
    L'envoie se passe bien mais à la réception, je reçois collé au fichier le code html (très minimaliste) de la page d'envoi. Comme on peut le voir ds le code, j'ai tenté de fixé et passé la taille ds un "Content-Type" mais sans succès. Je pense que l'orgine du pb vient surement du fait que ce code est ds la Page_Load mais je ne sais pas trop ou le mettre en fait et surtout comment l'appeler s'il est ailleurs.

    Une idée?
    Merci d'avance.

  2. #2
    Membre habitué

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 76
    Points : 145
    Points
    145
    Par défaut
    Salut,

    Au lieu de faire une page aspx, tu peux faire une page ashx. L'avantage est que cette page ne passe pas par toutes les étapes de la vie d'une page aspx et tu as la main sur ce qui est renvoyé.

    Le principe est de créer une page ashx vide et de mettre une directive
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ WebHandler Class="mynamespace.myHttpHandler,mynamespace" %>
    Qui va indiquer la classe qui va générer ce qui est renvoyé au navigateur du client.

    Je n'ai pas d'exemple sous la main, désolé, mais en cherchant sur google avec ashx et ASP.Net tu devrais avoir des exemples.

  3. #3
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Sinon, essaye de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Response.Clear();
    byte[] abyteFile;
    Response.ContentType = "application/octet-stream";
    Response.AddHeader("content-disposition", "attachment; filename=" + sFilename);
     
    abyteFile = GetBytes("AttachedFile");
    Response.BinaryWrite(abyteFile);
    Response.Flush();

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 94
    Points : 85
    Points
    85
    Par défaut
    Merci, j'essaye ça.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 94
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    ne résoud pas le pb. Je me suis donc dirigé vers les pages ashx et c'est en cherchant un exemple que j'ai trouvé la méthode:

    la doc Microsoft juste au cas où d'autres passeraient par là:

    "The End method causes the Web server to stop processing the script and return the current result. The remaining contents of the file are not processed."
    Merci à vous 2.

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

Discussions similaires

  1. Envoyer des fichiers du serveur vers plusieurs postes
    Par alucia dans le forum Windows Communication Foundation
    Réponses: 7
    Dernier message: 31/08/2012, 16h30
  2. Réponses: 1
    Dernier message: 13/12/2008, 09h20
  3. envoyer un fichier de outlook vers un dossier dans un serveur sql
    Par zaki_1982 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/12/2008, 12h04
  4. copier fichier du serveur vers le client fso
    Par nigiri dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/02/2006, 13h26
  5. [Indy] Transfert de fichiers du serveur vers le client
    Par Nicodemus dans le forum Web & réseau
    Réponses: 4
    Dernier message: 28/10/2005, 17h00

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