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 :

Télécharger fichier dans base de données


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut Télécharger fichier dans base de données
    Voila j'ai cherché partout sur le net, je ne trouve que pour l'upload d'un fichier, ca cela marche nikel.
    Pour dl j'ai pu lire tu envoie le liens du fichiers et c'est bon. Hors moi mon fichier est stocké en db, Projet oblige.
    j'avais fait cela pour une application windows.
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     public void restaurer(int fId, int numVersion)
            {
                SqlConnection myConnection = new SqlConnection(connectionString);
                SqlCommand myCommand = myConnection.CreateCommand();
                myConnection.Open();
                try
                {
                    myCommand.CommandText = "SELECT FichierData FROM ModificationFichiers WHERE FichierId = @FichierId AND numVersion=@numVersion;";
                    myCommand.CommandType = CommandType.Text;
     
                    SqlParameter FichierId = new SqlParameter();
                    FichierId.ParameterName = "@FichierId";
                    FichierId.SqlDbType = SqlDbType.Int;
                    FichierId.Value = fId;
     
                    myCommand.Parameters.Add(FichierId);
     
                    SqlParameter FichierVersion = new SqlParameter();
                    FichierVersion.ParameterName = "@numVersion";
                    FichierVersion.SqlDbType = SqlDbType.Int;
                    FichierVersion.Value = numVersion;
     
                    myCommand.Parameters.Add(FichierVersion);
                    Byte[] fileDataBytes = (Byte[])myCommand.ExecuteScalar();
                    String fileData = Encoding.ASCII.GetString(fileDataBytes);
     
                    SqlCommand sqlcom2 = myConnection.CreateCommand();
                    sqlcom2.CommandText = "SELECT FichierNom FROM Fichiers WHERE FichierId=" + fId;
                    SqlDataReader sqldata = sqlcom2.ExecuteReader();
                    while (sqldata.Read())
                    {
                        SaveFileDialog saveFileDialog1 = new SaveFileDialog();
                        saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
                        saveFileDialog1.FilterIndex = 2;
                        saveFileDialog1.FileName = sqldata.GetString(0);
                        saveFileDialog1.InitialDirectory = @"C:/";
                        if (File.Exists(saveFileDialog1.FileName))
                        {
                            File.Delete(saveFileDialog1.FileName);
                        }
                        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                        {
                            FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create);
                            byte[] data = fileDataBytes;
                            fs.Write(data, 0, System.Convert.ToInt32(data.Length));
                            fs.Seek(0, SeekOrigin.Begin);
                            fs.Close();
                        }
                    }
                }
     
                catch (Exception ex)
                {
                    MessageBox.Show("erreur" + ex);
                }
     
                finally
                {
                    myConnection.Close();
                }
    Bien entnedu savefile ne fonctionne pas en asp.net (ou en tout cas pas reussi a le faire fonctionné)

    ma question est donc, avec un fichier en db, comment je peux faire pour que l'utilisateur puisse telecharger un fichier?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    http://www.developpez.net/forums/sho...d.php?t=548123

    Si ça peut t'aider ...
    Et si après lecture il te reste des questions n'hésite pas à me les poser.

    Bon courage.

    Voici la méthode pour lire une fois qu'on a récup le fichier binaire de la DB.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Byte[] fichierUpload = RecupFichierDB();
    // Il faut préciser le mime type.
    Response.ContentType = "Image/jpg";
    // Optionnel selon cas d'utilisation
    Response.AddHeader("content-disposition", "attachment; filename=Hello.jpg");
    // Afficher ton fichier (si c'est une image tu peux aussi la convertir avant de l'afficher
    Response.BinaryWrite(fichierUpload);
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  3. #3
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    j'ai essayer de remduler un peu le code et j'obtiens l'erreure suivante La référence d'objet n'est pas définie à une instance d'un objet à la ligne suivante f.Write(data,0, data.Length);

    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
    28
    29
    30
    31
        public void restaurer(int fId)
        {
            string directorytest = @"c:\test\";
            SqlConnection myConnection = new SqlConnection(ConnectionString);
            SqlCommand myCommand = myConnection.CreateCommand();
            myConnection.Open();
            myCommand.CommandText = "RestaurerFichier";
            myCommand.CommandType = CommandType.StoredProcedure;
     
            SqlParameter fichiersId = new SqlParameter();
            fichiersId.ParameterName = "@fichiersId";
            fichiersId.SqlDbType = SqlDbType.Int;
            fichiersId.Value = fId;
     
            Console.WriteLine(fId);
     
            SqlParameter données = new SqlParameter();
            données.ParameterName = "@données";
            données.SqlDbType = SqlDbType.VarBinary;
            données.Size = 16000;
            données.Direction= ParameterDirection.Output;
            myCommand.Parameters.Add(données);
            File.Delete(directorytest + "test.txt");
            FileStream f = new FileStream( directorytest+"test.txt" ,FileMode.CreateNew);
            byte[] data =(byte[])données.Value;
     
            f.Write(data,0, data.Length);
     
            f.Close();
     
            myConnection.Close();
    une autre idée?

  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
    Vu que ton code n'exécute pas la commande SQL, données.Value est null.

  5. #5
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    3 ieme fois que je tombe dans ce piège merci beaucoup ca marche


    MICI

  6. #6
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    par contre avant de cloturer le poste j'utilisais pour l'application windows, savefiledialogue, il y a la meme chose en asp.net, un style de popup qui demande ou on veutsauver le fichier?

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

Discussions similaires

  1. Stockage des fichier Dans base de donnée sql
    Par Meryjean dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 29/08/2010, 12h23
  2. [MySQL] insérer des donnée d'un fichier dans base mysql
    Par monsieur77 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/01/2008, 15h20
  3. Fichiers en base de données ou dans le système de fichiers
    Par elitost dans le forum Optimisations
    Réponses: 4
    Dernier message: 13/11/2007, 10h43
  4. bonjour envoi fichier txt dans base de donnée
    Par suya95 dans le forum Débuter
    Réponses: 5
    Dernier message: 30/05/2006, 09h59
  5. Réponses: 3
    Dernier message: 22/05/2006, 16h02

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