Как только изображение отобразится, теперь мне нужно обновить базу данных, сохранив ASP:Image в VARBINARY(MAX ).
пример: если при загрузке в базе данных нет изображения, изображение по умолчанию считывается из файла и помещается в объект ASP:Image. Теперь, когда я собираюсь обновить запись, мне нужно сохранить ASP:Image в базе данных.
После поиска у меня есть несколько вариантов. Больше всего смысла имело следующее:
Код: Выделить всё
if(img_user_image.ImageUrl.Length > 0)
{
byte[] bytes = Convert.FromBase64String(img_user_image.ImageUrl.Replace("data:image/png;base64,", ""));
cmd.Parameters.Add("@user_image", System.Data.SqlDbType.VarBinary, -1).Value = bytes.ToArray();
}
Я не «просто загружаю» файл, поэтому использование методов FileUpload не помогает. Я полагаю, что мне нужно преобразовать в MemoryStream, но как мне поместить ASP:Image в поток памяти? Все, что я пробовал, не помогло.
При загрузке объекта ASP:Image из загруженного файла он работает как чемпион
Код: Выделить всё
if(fileUpload1.HasFile)
{
intFileSize = fileUpload1.PostedFile.ContentLength;
byte[] input = new byte[intFileSize - 1];
input = FileUpload1.FileBytes;
img_postedFile.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(input.ToArray(), 0, input.ToArray().Length);
}
Код: Выделить всё
SQL = "INSERT INTO tblImages (Name, Size, ImageData) " +
"VALUES (@file_name,@file_size,@image_file)";
cs = DBAccess.get_cs();
SqlCommand cmd = new SqlCommand(SQL, new SqlConnection(cs));
SqlDataAdapter da = new SqlDataAdapter(SQL, cmd.Connection);
cmd.Parameters.Add(new SqlParameter("@file_name", FileUpload1.FileName));
cmd.Parameters.Add(new SqlParameter("@file_size", intFileSize));
cmd.Parameters.Add(new SqlParameter("@image_file", input));
cmd.Connection.Open();
int i = cmd.ExecuteNonQuery();
cmd.Connection.Close();
Поиск в Google заставляет меня ходить кругами, но я не могу найти решение. Конечно, должен быть способ (возможно, до смешного простой) прочитать отображаемое изображение ASP:Image и сохранить его в базе данных SQL.
Надеюсь, я просто неправильно задаю вопрос. . Помогите!
Заранее спасибо.
Код: Выделить всё
if(img_user_image.ImageUrl.Length > 0)
{
byte[] bytes = Convert.FromBase64String(img_user_image.ImageUrl);
cmd.Parameters.Add("@user_image", System.Data.SqlDbType.VarBinary, -1).Value = bytes;
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... rbinarymax