Sauvegarde et récupération des images à partir de base de données SQL Server à l'aide de c#
J'ai créé une page web où j'ai utilisé Image
de contrôle pour affichage de l'image. Avec cette commande, j'ai quelques étiquettes et boîte d'entrée aussi
Ci-dessous le code que j'ai utilisé pour enregistrer l'image dans la base de données
byte[] imageSize = new byte[FileUpload1.PostedFile.ContentLength];
HttpPostedFile uploadedImage = FileUpload1.PostedFile;
uploadedImage.InputStream.Read(imageSize, 0, (int)FileUpload1.PostedFile.ContentLength);
SqlParameter UploadedImage = new SqlParameter("@image", SqlDbType.Image, imageSize.Length);
UploadedImage.Value = imageSize;
string sql = "insert into imageDB(Image) values (@image)";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(UploadedImage);
cmd.ExecuteNonQuery();
}
et ci-dessous le code que j'ai utilisé pour récupérer l'image à partir de la base de données
byte[] rawImg = (byte[])rdr["image"];
MemoryStream Stream = new MemoryStream();
Stream.Write(rawImg, 0, rawImg.Length);
Bitmap Display_Picture = new Bitmap(Stream);
//after this no idea how to proceed
J'ai lu certains liens sont tous ce qui suggère que nous ne pouvons pas définir cet octet d'information à Image
de contrôle.
Laissez-moi savoir si ma façon de récupérer l'image à partir de la base de données est de droit, si son droit, de quel type de contrôle que je devrais utiliser, de sorte que l'image de ce qui a été récupéré à partir de la base de données peuvent être affichées sur la page web
Vous devez vous connecter pour publier un commentaire.
Est mon moyen de récupérer l'image à partir de la base de données de droit?
Je voudrais utiliser le code suivant à la place (désolé pas testé):
Comment puis-je lier l'image à la une asp.net contrôle de l'image?
Je voudrais créer un HttpHandler qui reçoit et renvoie l'image. Puis de lier la propriété ImageUrl sur l'asp:Image à l'url de la HttpHandler.
Comment vous pouvez le faire vous pouvez le voir dans la réponse de Dale Ragan ici: Comment lier un MemoryStream à l'asp:contrôle de l'image?
Tout d'abord, dans votre exemple, vos devez réinitialiser la Position à l'intérieur de votre flux à 0:
Stream.Position = 0;
Deuxièmement, vous devez écrire votre image à un dossier cache local de votre service web qui fait partie de votre application web. Vous avez le contrôle de l'image peut avoir une Source de référence (img.src) à l'adresse de l'image.
Ou... vous pouvez créer un AXD-fichier /HttpHandler. Un AXD fichier est un fichier, un peu comme un ASPX, mais spécialisé dans le retour de n'importe quel type de données, comme une image.
Pour plus d'info, voir: http://blog.kurtschindler.net/post/using-httphandlers-to-serve-image-files
Pour récupérer l'image, et de montrer sur asp.net contrôle de l'Image, vous pouvez
Solution Alternative:
Implémenter un gestionnaire de servir de l'image. Jetez un oeil à la Système.Web.IHttpHandler interface.
L'idée serait d'écrire une balise image dans votre page le long des lignes de:
Puis dans votre gestionnaire de mise en œuvre, d'obtenir l'id de la chaîne de requête, de récupérer l'image que vous vous êtes déjà fait et ensuite d'écrire directement dans le flux de réponse.