Bonjour,

Je travaille avec une BD MySql et je voudrais stocker un PDF dans un champs BLOB.

Voici le code que j'utilise pour réaliser l'insertion (j'envois ma requête en passant par un webservice fonctionnant sous IIS) :

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
 
FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Read);
 
                    byte[] MyData = new byte[fs.Length];
                    fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));
 
                    fs.Close();
 
                    this._requete = "INSERT INTO stage_abstract(etuid, anac, pdf) VALUES (" + 1 + ", " + 2009 + ", \"" + MyData + "\")";
 
                    int suc = 0;
                    using (this._ds)
                    {
                        suc = this._dbo.InsertUpdateDelete(ws, this._requete);
                    }
Et voici ce que j'utilise pour recréer le fichier (_ds étant le DataSet que je récupère) :

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
 
byte[] MyData = new byte[0];
 
            this._requete = "SELECT stage_abstract.pdf as pdf FROM stage_abstract WHERE stage_abstract.etuid = " + 1 + " AND stage_abstract.anac = " + 2009;
 
            using (this._ds)
            {
                this._ds = this._dbo.select(this.ws, this._requete);
            }
 
            MyData = (byte[]) this._ds.Tables[0].Rows[0]["pdf"];
            int ArraySize = new int();
            ArraySize = MyData.GetUpperBound(0);
 
            FileStream fs = new FileStream(@"C:\essairecup.pdf", FileMode.OpenOrCreate, FileAccess.Write);
            fs.Write(MyData, 0, ArraySize);
            fs.Close();
Lorsque je tente d'ouvrir le fichier PDF, Adobe me dit qu'il n'a pas pu ouvrir le fichier car il n'est pas pris en charge ou est endommagé.

Je ne sais pas si c'est lors que l'insertion ou lors de la récupération que je procède mal. Je pense cependant que le problème est lors de l'insertion car j'ai pu voir dans mon champ blob que ce qui était inséré était de 13 o... Quelqu'un peut-il m'éclairer?

Merci.