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 :

Proposer le téléchargement d'une piece jointe


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 115
    Par défaut Proposer le téléchargement d'une piece jointe
    Bonjour,

    J'ai un GridView qui contient des ImageButton, lors du clique sur un de ces bouton je veux proposer le téléchargement d'un fichier (je ne connais pas le format du fichier).

    Mon fichier est stocké en base dans un champs varbinary(MAX) de cette manière :

    Lors du clic sur le bouton de ma GridView je fais appel à cette méthode :
    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
     
     
        private void ShowTheFile(string FileID)
        {
            ParameterCollection pcFile = new ParameterCollection();
            pcFile.Add("idfile", FileID);
            DataTable tableFichier = BLMWebTools.SelectAppQuery("SELECT * FROM PieceJointeDoc WHERE fileId=@idfile", pcFile);
     
            if (tableFichier.Rows.Count>0)
            {
                Response.Clear();
                Response.ContentType = tableFichier.Rows[0]["contentType"].ToString();
                Response.OutputStream.Write((byte[])tableFichier.Rows[0]["fichier"], 0, Convert.ToInt32(tableFichier.Rows[0]["length"]));
                //Response.BinaryWrite();
                Response.End();
            }
        }
    Ce que j'aimerais c'est que cette méthode me propose le téléchargement du fichier stocké en base quelque soit le type de fichier.

    (Actuellement elle fonctionne très bien mais ne me propose pas de téléchargement et m'affiche directement le fichier, ce qui est assez logique vu mon code)

  2. #2
    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
    Salut,
    Citation Envoyé par manu f Voir le message
    Actuellement elle fonctionne très bien mais ne me propose pas de téléchargement et m'affiche directement le fichier, ce qui est assez logique vu mon code
    Pas forcement, cela devrait dépendre du type de fichier. La plupart des navigateurs ouvrent les fichiers texte ou PDF dans le navigateur directement.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Essaie d'ajouter ce header :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.AppendHeader("Content-Disposition", "attachment; filename=nomdufichier");

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut
    Bonjour,

    Je suis intéressé par ce topic car j'ai posté également quelque chose sur le même sujet.

    Ce que je voudrais savoir, c'est à quoi correspond le "BLMWebTools" de la ligne

    DataTable tableFichier = BLMWebTools.SelectAppQuery("SELECT * FROM PieceJointeDoc WHERE fileId=@idfile", pcFile);
    Merci.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par stefsas Voir le message
    Ce que je voudrais savoir, c'est à quoi correspond le "BLMWebTools" de la ligne
    Ben a priori c'est un truc spécifique à son application, donc sans intérêt pour toi... A vue de nez c'est une méthode qui renvoie une DataTable à partir d'une requête SQL

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut
    Ok d'accord.
    Par contre, est-ce que tu pourrais me confirmer ou pas mes propos sur ces lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Response.ContentType = tableFichier.Rows[0]["contentType"].ToString();
                Response.OutputStream.Write((byte[])tableFichier.Rows[0]["fichier"], 0, Convert.ToInt32(tableFichier.Rows[0]["length"]));
    -contentType, fichier, length sont bien trois champs de la base de données avec :

    . length : la taille du fichier en kb (FileUpload1.PostedFile.ContentLength)
    . fichier : le chemin complet d'accés au fichier (FileUpload1.PostedFile.FileName)
    . contentType : le type du fichier (?)

    Je ne suis pas certain de ces informations ?
    Merci.

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

Discussions similaires

  1. [C#] envoyer un mail avec une piece jointe
    Par arnauann dans le forum C#
    Réponses: 5
    Dernier message: 22/08/2007, 10h09
  2. Recuperer une piece jointe dans la boite de reception
    Par elbronziero dans le forum Linux
    Réponses: 4
    Dernier message: 15/07/2007, 18h01
  3. faire une piece jointe?
    Par mbouzouita dans le forum Wildfly/JBoss
    Réponses: 8
    Dernier message: 16/05/2007, 13h36
  4. [Indy] attachement d'une piece jointe ne marche pas
    Par pierrot67 dans le forum Composants VCL
    Réponses: 11
    Dernier message: 08/03/2006, 19h07
  5. [ASP 3] Envoyer un Mail avec une piece jointe générer
    Par soltani.slim dans le forum ASP
    Réponses: 4
    Dernier message: 15/02/2006, 10h16

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