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 :

Comment provoquer le téléchargement d'un fichier?


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 192
    Par défaut Comment provoquer le téléchargement d'un fichier?
    Bonjour,

    Je souhaite lancer le téléchargement (coté client) d'un fichier situé sur le serveur, lorsque l'utilisateur clique sur le bouton "Télécharger".

    Je ne sais pas quoi utiliser Response.Redirect ou Server.Transfer?

    Merci d'avance.

  2. #2
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Si c'est coté client alors une simple balise hypertexte avec l'addresse du fichier à télécharger, et le tour est joué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <A href="http://monserveur/downloadfiles/Monfichieratelecharger.xxx">Telecharger</A>

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 192
    Par défaut
    Merci pour cette solution.

    Je souhaite lancer le téléchargement avec une ligne de code en C# dans la méthode "Button_Click".
    Comment faire?

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Server.Transfer ne permet que d'effectuer un transfert entre pages ASPX.

    Response.Redirect permet de faire ce que tu souhaites, mais il y a un aller-retour invisible vers le client et donc une perte inutile de performance.

    Sinon, il est possible d'ouvrir le fichier via FileStream en lecture non exclusive et d'écrire directement dans le Response.OutputStream.

  5. #5
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Il y a aussi la solution de mettre un peu de javascript dans ta page lorsque tu passes dans ton evenement boutton afin d'ouvrir une popup vers le fichier à télécharger. M'enfin ca depend de comment tu souhaites télécharger...

  6. #6
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Sinon,
    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
    FileInfo fileInfo = new FileInfo(@"C:\temp\fichier1.txt");
     
    byte[] buffer = new byte[2048];
    int block;
     
    using (FileStream fs = File.OpenRead(fileInfo.FullName))
    {
        while ((block = fs.Read(buffer, 0, buffer.Length)) > 0)
        {
            Response.OutputStream.Write(buffer, 0, block);
        }
    }
     
    this.Page.Response.ClearHeaders();
    this.Page.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", fileInfo.Name));
    this.Page.Response.End();
    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  7. #7
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 192
    Par défaut
    Merci Immobilis. C'est ce type de solution que je recherchais.

    Je l'ai cependant adapté puisque l'application tourne sur un serveur.

    Au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileInfo fileInfo = new FileInfo(@"C:\temp\fichier1.txt");
    J'ai remplacé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string path = Server.MapPath("");
                FileInfo fileInfo = new FileInfo(path + "/App_Data/fichier1.txt");
    Merci

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

Discussions similaires

  1. Comment forcer le téléchargement d'un fichier en JavaScript?
    Par solawe dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 03/02/2011, 10h15
  2. Comment permettre le téléchargement de fichiers EXE
    Par nicolas2603 dans le forum IIS
    Réponses: 1
    Dernier message: 06/01/2009, 14h46
  3. Réponses: 4
    Dernier message: 13/06/2007, 15h27
  4. Comment forcer le téléchargement d'un fichier avec IE.
    Par karibouxe dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 24/05/2006, 11h51

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