J'ai un file binary qui stocke dans la colonne customerPicture
qui a Image comme un type de données dans la table CUSTOMERs.
J'ai enregistré une image en utilisant cette ligne de code dans LINQ to SQL.
Dim db = new MyCompanyDataContext Dim newCus = new CUSTOMERs Dim filebyte As Byte() = fileUploader.FileBytes Dim fileBinary As New System.Data.Linq.Binary(filebyte) newCus.customerPicture = fileBinary
Alors maintenant je veux récupérer ce file binary à lier dans le gridview dans ASP.NET en utilisant LINQ to SQL, mais je ne sais pas comment. Pouvez-vous s'il vous plaît me montrer quelques façons d'atteindre la solution?
vous pouvez utiliser Httphandler pour récupérer les images de la database.
<ItemTemplate> <asp:Image ID="imgPhoto" runat="server"/> </ItemTemplate>
Si vous avez une image en tant que ItemTemplate dans la grid de données.
Dans l'événement ItemDataBound de l'appel de données, appelez le "HttpHandler" pour afficher l'image. Dans le code ci-dessous, je trouve le contrôle de l'image et assigne l'imageUrl comme path de file HttpHandler. Je passe également l'id comme string de requête au HttpHandlerFile.
System.Web.UI.WebControls.Image photoImage = (System.Web.UI.WebControls.Image)e.Item.FindControl("imgPhoto"); photoImage.ImageUrl = "ImageHandler.ashx?PhotoID=" + id.ToSsortingng();
Et dans le file HttpHandler, utilisez Linq pour récupérer l'image et l'afficher.
public void ProcessRequest (HttpContext context)
{
context.Response.ContentType = "image/jpeg";
int photoId = -1; //Check the query ssortingng. if (context.Request.QuerySsortingng["PhotoId"] != null && context.Request.QuerySsortingng["PhotoId"] != "") { photoId = Convert.ToInt32(context.Request.QuerySsortingng["PhotoID"]); } if (photoId != -1) { MovieDataContext db = new MovieDataContext(); //Get the movie record based on the ID MovieTable movie = db.MovieTables.First(m => m.ID == photoId); System.Data.Linq.Binary fileBinary = movie.Photo; byte[] fileByte = fileBinary.ToArray(); //displays the Image. context.Response.BinaryWrite(fileByte); } }
Comme ce file HttpHandler est mappé à l'imageURL dans la grid de données, vous pouvez voir les images affichées dans le DataGrid.
Essaye ça:
dim ms as new MemoryStream ms.Write(fileBinary.ToArray(),0,fileBinary.Length) dim img as Image img = Image.FromStream(ms) newCus.customerPicture = img