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 :

Problème de téléchargement bizarre avec Response.WriteFile


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Points : 15
    Points
    15
    Par défaut Problème de téléchargement bizarre avec Response.WriteFile
    Bonjour,

    J'ai un petit soucis avec une appli web dont une page sert à télécharger des fichiers.

    Je m'explique, j'ai un gridview décrivant les fichiers téléchargeables (path sur le serveur, date d'ajout, description...), et un bouton permettant de télécharger le fichier sélectionné.
    Je n'ai aucun problème pour le téléchargement de fichiers binaires (doc, pdf...) mais par contre si je télécharge des fichiers ASCII, ce con m'ajoute le code source de la page aspx dans le fichier ASCII !

    Bizarre.

    Quelqu'un aurait-il une idée ?

    Voici le code incriminé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Response.ContentType = "application/octet-stream"
    Response.AddHeader("Content-Disposition", "attachment; filename=" & str)
    Response.Flush()
    Response.WriteFile("F:\inetpub\cheminBidon\Files\" & str)

  2. #2
    Membre éclairé Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Points : 755
    Points
    755
    Par défaut
    Bonjour,

    Si tu met le Response.Flush() juste après WriteFile pour voir ce que ça donne. Et si par hasard tu met ton code dans une boucle, mettre Flush() juste après la sortie du boucle.

    a+

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2009
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2009
    Messages : 229
    Points : 305
    Points
    305
    Par défaut
    Voici le code de téléchargement ou lecture d'un 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    string pathFichier="xxx";
    string nomFichier="xxxx";
    string extensionFichier ="xxx";
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + nomFichier);
                        Response.AppendHeader("Content-Length", _stream.Length.ToString());
     
                        switch (extensionFichier)
                        {
                            case "txt": Response.ContentType = "application/txt"; break;
                            case "pdf": Response.ContentType = "application/pdf"; break;
                            case "doc": Response.ContentType = "application/doc"; break;
                            case "docx": Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break;//msword
                            case "jpg": Response.ContentType = "application/jpg"; break;
                            case "xlsx": Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break;
                            case "pptx": Response.ContentType = "application/vnd.openxmlformats-officedocument.presentationtml.presentation"; break;
                            case "ppt": Response.ContentType = "application/vnd.ms-powerpoint"; break;
                            case "png": Response.ContentType = "application/png"; break;
                            case "csv": Response.ContentType = "application/csv"; break;
                            case "zip": Response.ContentType = "application/x-zip-compressed"; break;
                            default: Response.AppendHeader(
                                        "Content-disposition",
                                        "attachment; filename=content." + extensionFichier ); 
                                        break;
                        }
                        Response.WriteFile(pathFichier);
                        Response.End();

  4. #4
    Membre éclairé Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Points : 755
    Points
    755
    Par défaut
    Je ne voie pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.ContentType = "application/octet-stream"
    dans tes codes.
    Tu as essayé d'enlever le Flush() et ça donne quoi?

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2009
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2009
    Messages : 229
    Points : 305
    Points
    305
    Par défaut
    Je traite le type de content selon l'extension de fichier :
    si c'est un fichier word par exemple il faut que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.ContentType = "application/doc";

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Bonjour à tous,

    C'est donc le response.end() qui manquait... Tout fonctionne nickel désormais

    Merci beaucoup et vous tous pour vos idées.

    A+ Magum

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

Discussions similaires

  1. [Lazarus] [Mac OS X] Problème de téléchargement HTTP avec Indy
    Par sinfoni dans le forum Lazarus
    Réponses: 0
    Dernier message: 13/04/2011, 18h34
  2. [C#] Problème avec Response.Redirect
    Par elbj dans le forum ASP.NET
    Réponses: 6
    Dernier message: 03/03/2006, 15h30
  3. Problème de téléchargement avec Windows XP pro
    Par bernard38 dans le forum Windows XP
    Réponses: 7
    Dernier message: 01/03/2006, 09h10
  4. Problème très bizarre avec COUNT
    Par Nomade95000 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/10/2005, 14h12
  5. problèmes bizarres avec jdbc
    Par jaimepasteevy dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 12/12/2003, 12h00

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