Introduction
In this post, I explain how to insert an image into a database and display it in gridview without Image Handler.Steps :
Step-1 : Create New Project
Go to File > New > Project > Select asp.net web forms application > Entry Application Name > Click OK.Step-2: Add a Database.
Go to Solution Explorer > Right Click on App_Data folder > Add > New item > Select SQL Server Database Under Data > Enter Database name > Add.Step-3: Create a table (for store image).
Open Database > Right Click on Table > Add New Table > Add Columns > Save > Enter table name > Ok.Step-4: Add Entity Data Model.
Go to Solution Explorer > Right Click on Project name form Solution Explorer > Add > New item > Select ADO.net Entity Data Model under data > Enter model name > Add.A popup window will come (Entity Data Model Wizard) > Select Generate from database > Next >
Chose your data connection > select your database > next > Select tables > enter Model Namespace > Finish.
Step-5: Add Web Page.
Go to Solution Explorer > Right Click on Project under solution explorer > Add > New item > Select Web Form using Master Page under web > Enter Name > > Select Master Page>Add.Here is HTML Code
- <h3>My Image Gallery</h3>
- <div>
- <table>
- <tr>
- <td>Image Title : </td>
- <td>
- <asp:TextBox ID="txtImageTitle" runat="server"></asp:TextBox></td>
- </tr>
- <tr>
- <td>Image : </td>
- <td>
- <asp:FileUpload ID="FUImage" runat="server" /></td>
- </tr>
- <tr>
- <td></td>
- <td>
- <asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" />
- <asp:Label ID="lblMsg" runat="server" />
- </td>
- </tr>
- </table>
- <br />
- <div>
- <asp:GridView ID="gvGallery" runat="server" AutoGenerateColumns="false" Width="50%">
- <EmptyDataTemplate>
- <div style="text-align:center">
- No Image Found
- </div>
- </EmptyDataTemplate>
- <Columns>
- <asp:BoundField HeaderText="Title" DataField="ImageTitle" />
- <asp:TemplateField ItemStyle-Width="150px">
- <ItemTemplate>
- <asp:Image ID="Image1" runat="server" Width="100px" ImageUrl='<%#Eval("Picture").ToString() == ""?"": GetImageString64((byte[])Eval("Picture")) %>' />
- </ItemTemplate>
- </asp:TemplateField>
- </Columns>
- </asp:GridView>
- </div>
- </div>
Step-6: Add Code For Populate Image in gridview.
Write the followings code in your page load event for fetch Data from Database and show in gridview.PAGE LOAD CODE
- if (!IsPostBack)
- {
- PopulateGallery();
- }
And Here is the function code
Write below function to your page For Convert byte image data to base64String.
- private void PopulateGallery()
- {
- // here code for populate image gallery
- using (MyDatabaseEntities1 dc = new MyDatabaseEntities1())
- {
- List<ImageGallery> imgGallery = new List<ImageGallery>();
- imgGallery = dc.ImageGalleries.ToList();
- gvGallery.DataSource = imgGallery;
- gvGallery.DataBind();
- }
- }
- protected string GetImageString64(byte[] Image)
- {
- // For convert byte image to base 64 string
- string base64String = Convert.ToBase64String(Image, 0, Image.Length);
- return "data:image/png;base64 ," + base64String;
- }
Step-7: Add Code For Save Image.
Write the followings code in Button Click event for save an image to the database.
- protected void btnSave_Click(object sender, EventArgs e)
- {
- // Code for Save Image
- if (FUImage.HasFile)
- {
- int length = FUImage.PostedFile.ContentLength;
- byte[] img = new byte[length];
- FUImage.PostedFile.InputStream.Read(img, 0, length);
- ImageGallery ig = new ImageGallery
- {
- SLID = 0,
- ImageTitle = txtImageTitle.Text.Trim(),
- Picture = img
- };
- using (MyDatabaseEntities1 dc = new MyDatabaseEntities1())
- {
- dc.ImageGalleries.Add(ig);
- dc.SaveChanges();
- lblMsg.Text = "Successfully Saved";
- // populate Gallery image Here
- PopulateGallery();
- }
- }
- }
- protected void Button1_Click(object sender, EventArgs e)
- {
- if (FUImage.HasFile)
- {
- int length = FUImage.PostedFile.ContentLength;
- byte[] imgbyte = new byte[length];
- HttpPostedFile img = FUImage.PostedFile;
- img.InputStream.Read(imgbyte, 0, length);
- SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
- connection.Open();
- SqlCommand cmd = new SqlCommand("INSERT INTO ImageGallery (ImageTitle, Picture) VALUES (@ImageTitle,@Picture)", connection);
- cmd.Parameters.Add("@ImageTitle", SqlDbType.VarChar,150).Value = txtImageTitle.Text.Trim();
- cmd.Parameters.Add("@Picture", SqlDbType.Image).Value = imgbyte;
- int count = cmd.ExecuteNonQuery();
- connection.Close();
- }
- }
STEP-8: Run Application
Run Application and Get result in your browser.Give me a +1 if it is helpful. Thank You