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 :

[C#] Télécharger un fichier en cliquant sur un bouton


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Points : 64
    Points
    64
    Par défaut [C#] Télécharger un fichier en cliquant sur un bouton
    Bonjour,

    Je realise une page web en aspx (code behind en C#) et je souhaiterais provoquer le telechargement d'un fichier lorsque l'utilisateur clic sur un bouton.
    Pour cela j'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private void downloadFileButton_Click(object sender, System.EventArgs e)
    {
    	Response.ContentType = "application\\octet-stream";
    	System.IO.FileStream file = new System.IO.FileStream(@"D:\essai.txt",System.IO.FileMode.Open);
    	Response.Write(file.Length+"#");
    	file.Close();
    	Response.WriteFile(file.Name);
    	Response.Flush();
    	Response.End();
    }
    (essai.txt est un fichier que je cree juste pour tester le programme. )

    Mais lorsque je clique sur le bouton, j'ai deux problemes :
    - premierement, sous internet explorer, le fichier que je telecharge n'est pas essai.txt mais ma page MainPage.aspx.
    - Deuxiemement, sous firefox, le fichier ne se telecharge pas mais s'ouvre dans un nouvelle page (mais c'est bien essai.txt cette fois).

    Donc si quelqu'un peut m'expliquer ce qu'il se passe, je lui en serqis tres reconnaissant.

    Merci.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 103
    Points : 92
    Points
    92
    Par défaut
    Une fois que tu te seras mis en règle avec le forum

    Si tu mets ton fichier "essai.txt" sous ton application Web, cela ne fonctionne t'il pas mieux ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Points : 64
    Points
    64
    Par défaut
    Non, toujours pas mieux... Par contre je comprend un peu mieux ce qu'il se passe : en fait le Response.WriteFile() m'ecrit le contenu de mon fichier essai.txt dans une nouvelle page MainPage.aspx et je force le telechargement de MainPage.aspx.

    Mais cela me parait bizard de devoir passer par la pour telecharger un simple fichier. N'y a-t-il pas un moyen plus simple ?

    Merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Points : 64
    Points
    64
    Par défaut
    Bon alors apres avoir passe quelques heures sur les forums, j'ai enfin resolu mon probleme :
    Il suffit de trouver les bon headers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    string filename = System.Configuration.ConfigurationSettings.AppSettings["eSignServer_RootPath"] + "essai.txt";
    System.IO.FileInfo fileInfo = new System.IO.FileInfo(filename);
    Response.Clear();		
    Response.AppendHeader("Content-Disposition","attachment; filename="+fileInfo.Name);
    Response.AppendHeader("Content-Length",fileInfo.Length.ToString());
    Response.ContentType = "application/octet-stream";
    Response.WriteFile(fileInfo.FullName);
    Response.End();
    Voila.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/04/2015, 12h59
  2. Réponses: 5
    Dernier message: 20/09/2014, 09h02
  3. [UI Mobile] Charger un fichier XML /JSON sur un clique
    Par van-bom dans le forum jQuery
    Réponses: 2
    Dernier message: 22/01/2014, 10h40
  4. Réponses: 2
    Dernier message: 12/01/2009, 13h24
  5. ouvrir un fichier en cliquant sur un bouton
    Par harris_macken dans le forum Interfaces Graphiques en Java
    Réponses: 13
    Dernier message: 28/03/2008, 22h03

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