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

Signaler
Messages postés
186
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
11 avril 2011
-
Messages postés
186
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
11 avril 2011
-
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

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
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 ! -
Messages postés
186
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
11 avril 2011
2
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  
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
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 ! -
Messages postés
186
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
11 avril 2011
2
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
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
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 ! -
Messages postés
186
Date d'inscription
mercredi 14 mars 2007
Statut
Membre
Dernière intervention
11 avril 2011
2
Merci beaucoup pour ta réponse !!