Stocker le contenu d'un fichier dans une variable en c#

Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 - 25 mai 2009 à 16:05
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 - 27 mai 2009 à 17:10
Bonjour,



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




Je voudrais savoir comment Stocker le contenu d'un fichier dans une variable en c# pour stocker cette variable dans une base de donées sqlserver





 








Merci pour votre aide

6 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
25 mai 2009 à 17:11
Salut

Pour "stocker le contenu d'un fichier dans une variable", il suffit de lire le fichier via StreamReader.ReadToEnd() qui te renverra un string, que tu sauvegarderas alors dans ta base.

Si tu as la moindre question, n'hésite pas...
... à faire des recherches sur ce site et/ou sur Google. Ils sont là pour ça. Si tu ne trouves pas, c'est que tu n'as pas cherché.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
0
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
25 mai 2009 à 17:20
Merci pour ta réponse,<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>




Si par exemple le fichier à stocker est un fichier image on peut utiliser le ReadToEnd() ??


J’ai vu qu’il ya un type Binary qui permet de stocker de fichiers de type quelconque.


Dans mon code j’ai fait:



 






 

FileStream
DocAss = newFileStream("path", FileMode.Open);







Binary var = doccass;


Je sais pas si après cette instruction (FileStream DocAss = newFileStream("path", FileMode.Open);) la variable Docass contient le fichier en elle-même


Merci de m’éclairer les choses  
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
25 mai 2009 à 17:54
Si c'est une image, non, tu ne peux pas utiliser ReadToEnd(), qui renvoie un string, et non un tableau d'octets.

En ce qui concerne DocAss, non, elle ne contient pas ton fichier. Un StreamReader c'est un peu comme une tête de lecture. Tu l'utilises pour récupérer tes informations, mais ce n'est pas une information.

En ce qui concerne la sauvegarde d'une image dans une base de données, tu peux regarder sur ce site :
http://www.codeproject.com/KB/database/ImageSaveInDataBase.aspx
à condition de ne pas être anglophobe.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
0
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
26 mai 2009 à 09:30
Merci pour le lien !


Je me demande si ce code s’applique pour tout type de fichier ou que pour des fichier images ?


Ma deuxième question  est :






1.

           



m_barrImg=new




byte



[Convert.ToInt32(




this



.m_lImageFileLength)];<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>










2.

           




        





int



iBytesRead = fs.Read(m_barrImg,




0



,










3.

           




                         Convert.ToInt32(




this



.m_lImageFileLength));








 






Au stade de premier ligne la variable m_barrImg contient le fichier qu’on peux stocker dans la base, est ce que la ligne 2 est indisponsable ? ou on peux se contenter de la 1er ligne pour recupere m_barrImg qui contient mon fichier.






 






Et en fin une derniére question






 







StreamReader
DoccAss = newStreamReader(this.txtFicAttach.Text





Dans ce cas est ce que DoccAss contient mon fichier et si oui est ce que ca marche pour type de fichier






 






Encore merci pour les réponses
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
26 mai 2009 à 10:13
Je répète ce que je t'ai dit lors de ma précédente réponse :
Un stream ne contient rien du tout. Un stream c'est comme une tête de lecture (ou d'écriture). Ça sert à lire le fichier mais CE N'EST PAS le fichier.
Donc DoccAss ne contiendra jamais ton fichier. Cependant, un streamreader marche pour n'importe quel type de fichiers.

Au niveau de ton code : Après la ligne 1, m_barrImg ne contient absolument pas ton image. Désolé de dire ça ainsi, mais ça prouve qu'il te manque des connaissance absolument basiques en C#. En l'occurrence, ta première ligne alloue juste de la mémoire pour ton tableau de bytes (dont la taille est la même que celle du fichier) (et les bytes de ton tableau sont automatiquement initialisés à 0). De plus, si tu regardes cette première ligne, le seul lien qu'elle est avec ton fichier, c'est qu'elle récupère sa taille, et donc en aucun cas son contenu. Ce dernier n'est accessible que via un StreamReader (qui, je le rappelle, n'est qu'une classe qui donne accès à un contenu, pas le contenu lui-même).
Evidemment donc que la 2ème ligne est indispensable. C'est elle qui charge ton fichier en mémoire. Il suffit, si tu n'en es pas sûr, de regarder la doc MSDN de la fonction Read() d'un streamreader (MSDN est là pour ça).

Enfin, oui, cette méthode marche théoriquement pour n'importe quel type de fichier.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
0
Souliabdo Messages postés 186 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 11 avril 2011 2
27 mai 2009 à 17:10
Merci beaucoup pour ta réponse !!
0
Rejoignez-nous