Insertion / recuperation d'image stockee dans une db ms sql server 2000

Soyez le premier à donner votre avis sur cette source.

Vue 28 194 fois - Téléchargée 2 947 fois

Description

Bonjour,

Ce petit bout de code fait avec visual studio 2003 (C#) permet de voir comment insérer et récuperer des images stockées dans la base de données.

Il vous suffit afin de le faire tourner de créer la db d'exmple et de creer la procédure stockée qui enregistre l'image dans la db et de placer vos paramètres de connection au serveur ms sql.
La structure de la db et la procédure se trouvent dans le fichier info.txt.

Ensuite, ouvrez le projet et allez modifier le fichier web.config en y plaçant votre chaine de connection au serveur sql.

<add key="Connect" value="VOTRE CONNECTION STRING"></add>

Lancer ça tourne...

Source / Exemple :


private void save(string nomcomplet)
		{

			//Avec la class FileInfo on peut recuperer la taille de l'image
			FileInfo fiImage=new FileInfo(nomcomplet);
			
			//On declare un tableau de la taille de l'image
			this.m_lImageFileLength=fiImage.Length;
			m_barrImg=new byte[Convert.ToInt32(this.m_lImageFileLength)];
			
			//Avec l'objet FileStream on remplit le tableau de byte
			FileStream fs = new FileStream(nomc,FileMode.Open,FileAccess.Read,FileShare.Read);
			int iBytesRead=fs.Read(m_barrImg,0,Convert.ToInt32(this.m_lImageFileLength));
			fs.Close();

			//On ouvre la connection 
			SqlConnection myConnection = new SqlConnection();
			myConnection.ConnectionString = ConfigurationSettings.AppSettings["Connect"];
 
			//On specifie que c'est une procedure stockee
			SqlCommand myCommand = new SqlCommand("SP_StockImage",myConnection);
			myCommand.CommandType = CommandType.StoredProcedure;

			//Parametre
			myCommand.Parameters.Add("@Name", SqlDbType.VarChar, 50);
			myCommand.Parameters.Add("@Picture", SqlDbType.Image);

			//Les valeurs pour les parametres de la procedure stockee
			myCommand.Parameters["@Name"].Value = Label1.Text;
			myCommand.Parameters["@Picture"].Value = m_barrImg;

			//Parametre de sortie
			SqlParameter renvoitID = new SqlParameter("@ID_Recup",SqlDbType.Int, 4);
			renvoitID.Direction = ParameterDirection.Output;
			myCommand.Parameters.Add(renvoitID);
			
			//Open connection
			myConnection.Open();

			//execution de la procedure stockee
			int id = Convert.ToInt32(myCommand.ExecuteScalar()); 

			//Close connection
			myConnection.Close();

			//On redirige
			Response.Redirect("Affiche.aspx?lastID="+id);
		}

Conclusion :


Bonne journée
Christophe

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Malkuth
Messages postés
278
Date d'inscription
samedi 22 février 2003
Statut
Membre
Dernière intervention
24 avril 2013
2 -
Si tu veux un .Net2 ca donne ca :

<%@ Page Language="VB" buffer="true" %>
<%
Response.Clear()
Dim ImageBuffer As Byte()
Dim Mime As String
Dim IDImage As Integer = 0
If Not Integer.TryParse(Request("IDImage"), IDImage) Then
Response.StatusCode = 500
Response.StatusDescription = "IDImage Incorrect ou non fourni."
End If
'Récupération de MimeType et du
'code binaire de l'image dans
'les variables respective
'Graceau paramêtre IDImage

Response.ContentType = Mime
Response.BinaryWrite(ImageBuffer)
Response.End()
%>
jellalimounir
Messages postés
19
Date d'inscription
mardi 27 février 2007
Statut
Membre
Dernière intervention
23 janvier 2009
-
merci, mais ma page est .aspx et il n y a pas de type mime
cs_Malkuth
Messages postés
278
Date d'inscription
samedi 22 février 2003
Statut
Membre
Dernière intervention
24 avril 2013
2 -
Pour ce qui est du problème de sécurité, et bien c'est justement un autre problème!

Mais en combinant cette source avec d'autre traitant de sécurité, on doit pouvoir ce faitre un truc pas mal!
cs_Malkuth
Messages postés
278
Date d'inscription
samedi 22 février 2003
Statut
Membre
Dernière intervention
24 avril 2013
2 -
Le plus simple a mon gout :

1-tu créé une page ASP
2-Dans le type Mime tu met "image/jpeg"(ou autre selon le type d'image)
3-tu récupère le binaire de l'image dans un buffer et tu le transmet au navigateur


ex :

Response.MimeType="image/jpeg"
'Récupération de l'image voulue dans BuffImage
Response.BinaryWrite(BuffImage)
Response.End()

Bon je pas le nom de toutes les fonction en tête donc t'attend pas a se que le code marche (mais alors vraiment pas!!!) mais c'est la démarche a suivre

ce qu'il faut retenir c'est que les navigateur ne tienne pas compte de l'extention du fichier(.aspx) mais du type mime pour gérér les contenus. La page peut prendre des param^tres commes toutes les pages asp(en URL ou en post), donc en passant en passant un ID tu peut renvoyedr la bonne image de la base de donnée. Enfin, il suffit de codé les autre page en fonction :
"/>
voilà j'espère que c'est clair je te laisse le soin de retrouvé toutes les bonne fonctions
PS: si tu as plusieurs type d'image, tu renseigne un champ avec le type mime dans la BDD et tu le met dinamiquement dans la reponse.
veille a ne pas laissé d'espace,retour a la ligne ou autre en dehors des <% et %> sinon ils risque d'être transmit avec l'image et de la corrompre.

PPS: tu peut utilisé la même technique pour transféré d'autre chose que des image(doc PDF par exemple)
jellalimounir
Messages postés
19
Date d'inscription
mardi 27 février 2007
Statut
Membre
Dernière intervention
23 janvier 2009
-
salut,
comment récuperer l'image dans un controle asp , par exple le controle image
et merci d'avant

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.