Как только изображение отобразится, как мне обновить базу данных, сохранив ASP:Image в VARBINARY(MAX ) в моей таблице SQL Server?
Например, если при загрузке в базе данных нет изображения, изображение по умолчанию считывается из файла и помещается в ASP. :Объект изображения. Теперь, когда я собираюсь обновить запись, мне нужно сохранить 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 Server.
Надеюсь, я просто не задаю этот вопрос. правильно. Помогите!
Заранее спасибо.
Подробнее здесь: https://stackoverflow.com/questions/790 ... rbinarymax