how to store and retrieve image from sql database using c# in mvc
snippet in sql

how to store and retrieve image from sql database using c# in mvc

user8307

BY LOVE
Note : - name attribute of the image file must match with the action parameter
	   - Datatype of Image column in sql will be varbinary(max)

1- CSHTML page code
 @using (Html.BeginForm("UserProfile", "UserHome", FormMethod.Post, new { enctype = "multipart/form-data" }))
     {              
          <input type="file" id="postedFile" name="postedFile" class="custom-file-input" border="1">
          <input type="submit" class="btn btn-primary" value="Save Changes">
     }
     
2- Controller code
 		[HttpPost]
        public ActionResult UserProfile(UserProfileViewModal modal, HttpPostedFileBase postedFile)
        {
            User objUser = new User();
            objUser.First_Name = modal.FirstName;
            objUser.Last_Name = modal.LastName;
            objUser.Email = modal.Email;
            objUser.Company = modal.Company;
            objUser.Address = modal.Address;
            objUser.TimeZone = modal.TimeZone;
            objUser.UserName = modal.UserName;
            objUser.Password = modal.Password;

            //Image CODE
            if (postedFile != null)
            {
                byte[] bytes;
                using (BinaryReader br = new BinaryReader(postedFile.InputStream))
                {
                    bytes = br.ReadBytes(postedFile.ContentLength);
                    modal.UserImage = bytes;
                }
            }
           

            // Call the method here to update the USER record.
            string Query = "Update Users set Password='" + modal.Password + "', First_Name='" + modal.FirstName + "', Last_Name='" + modal.LastName + "'," +
             "Email='" + modal.Email + "', Address='" + modal.Address + "', Company='" + modal.Company + "', TimeZone='" + modal.TimeZone + "' where UserName='" + modal.UserName + "'";
            objUsersBLL.UpdateUserData(Query, out Exception ex);
            Query = "Update Users set UserImage=@imgByte where  UserName='" + modal.UserName + "'";
            using (SqlCommand cmd = new SqlCommand(Query))
            {
                cmd.Parameters.AddWithValue("@imgByte", modal.UserImage);
                objUsersBLL.UpdateUserDataImageScalarSQL(cmd, out Exception exs);
            }
            return RedirectToAction("UserProfile");
        }
        
 3- Controller code to get image from database
  [HttpGet]
        public ActionResult UserProfile()
        {
            string UserName = "";
            if (TempData["Username"] != null)
            {
                UserName = TempData["Username"].ToString();
                TempData.Keep("Username");
            }
            User user = objUsersBLL.GetUserDettailsEnityList(UserName, out Exception ex);
            UserProfileViewModal objUserProfileViewModal = new UserProfileViewModal();

            //Image Code
            if (user.UserImage != null)
            {
                ViewBag.Base64String = user.UserImage;
            }
            return View(objUserProfileViewModal);
        }
 4- Now showing the image on CSHTML page from the viewbag
  if (ViewBag.Base64String != null)
      {
           <img style="height:100px; width:100px;" alt="" src="data:image/jpg;base64,@Convert.ToBase64String(ViewBag.Base64String)" />
       }
     else
       {
          <p>No image</p>
       }