Я хочу отобразить изображение, которое хранится в базе данных
Это моя база данных:
create table images ( ID int primary key identity, Name nvarchar(255), Size int, ImgData varbinary(max) ) CREATE PROCEDURE UploadImages @Name nvarchar(255), @Size int, @ImgData varbinary(max), @NewId int output AS BEGIN INSERT INTO images VALUES (@Name, @Size, @ImgData) SELECT @NewId = SCOPE_IDENTITY() END
Это мой код:
HttpPostedFile PostedFile = FileUpload1.PostedFile; string fileName = Path.GetFileName(PostedFile.FileName); string fileExtension = Path.GetExtension(fileName); int fileSize = PostedFile.ContentLength; if(fileExtension.ToLower() == ".jpg" || fileExtension.ToLower() == ".bmp"|| fileExtension.ToLower() == ".gif" || fileExtension.ToLower() == ".png") { Stream stream = PostedFile.InputStream; BinaryReader binaryReader = new BinaryReader(stream); byte[] bytes = binaryReader.ReadBytes((int)stream.Length); string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString; using (SqlConnection con = new SqlConnection(cs)) { SqlCommand cmd = new SqlCommand("UploadImages", con); cmd.CommandType = CommandType.StoredProcedure; con.Open(); SqlParameter paramName = new SqlParameter() { ParameterName = "@Name", Value = fileName }; cmd.Parameters.Add(paramName); SqlParameter paramSize = new SqlParameter() { ParameterName = "@Size", Value = fileSize }; cmd.Parameters.Add(paramSize); SqlParameter paramImgData = new SqlParameter() { ParameterName = "@ImgData", Value = bytes }; cmd.Parameters.Add(paramImgData); SqlParameter paramNewId = new SqlParameter() { ParameterName = "@NewId", Value =-1, Direction = ParameterDirection.Output }; cmd.Parameters.Add(paramNewId); cmd.ExecuteNonQuery(); con.Close(); Lmas.Visible = true; Lmas.Text = "done"; Lmas.ForeColor = System.Drawing.Color.Green; HyperLink1.Visible = true; HyperLink1.NavigateUrl = "~/ShowImage.aspx?Id=" + cmd.Parameters["@NewId"].Value.ToString(); //LoadImage(); } } else { Lmas.Visible = true; Lmas.Text = "only images (.jpg .png .gif .bmp) can be uploaded"; Lmas.ForeColor = System.Drawing.Color.Red; HyperLink1.Visible = false; }
-------------------
Что я уже пробовал:
Я пытался отобразить свое изображение в img-теге или метке на первой странице не на той же странице, но это не работает , я пробовал этот код, но не работает:
string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString; using (SqlConnection con = new SqlConnection(cs)) { SqlCommand cmd = new SqlCommand("spGetImageById", con); cmd.CommandType = CommandType.StoredProcedure; SqlParameter paramID = new SqlParameter() { ParameterName = "@ID", Value = Request.QueryString["ID"] }; cmd.Parameters.Add(paramID); con.Open(); cmd.ExecuteScalar(); byte[] bytes = (byte[])cmd.ExecuteScalar(); string strBase64 = Convert.ToBase64String(bytes); Image1.ImageUrl = "data:Image/png;base64," + strBase64;
Maciej Los
Что вы подразумеваете под "не работает"?
Member 12748242
Процедура или функция 'spGetImageById' ожидает параметр '@ID', который не был указан.
ZurdoDev
Это не имеет абсолютно никакого отношения к изображению, работающему или не работающему. Это просто простой и базовый c# / sql. Просто исправь то, что там написано. Простой.
Member 12748242
Я меняю его на:
используя (команда sqlcommand cmd и = новая команда sqlcommand("spGetImageById ", кон))
{
УМК.CommandType = CommandType.Хранимая процедура;
Объект sqlparameter paramID = новый объект sqlparameter()
{
ParameterName = " @ID",
Значение = Запрос.QueryString ["ID"]
};
УМК.Параметры.Добавить(paramID);
против.Открыть();
SqlDataReader rd = cmd.Метода executereader();
если (РД.HasRows)
{
РД.Читать();
Label45.Текст = РД.Метод toString();
}
}
но никакого изображения не появляется
[no name]
Научитесь использовать отладчик и отлаживать свой код.
Wendelius
Что такое код для spGetImageById?
Member 12748242
Это для того, чтобы увидеть изображение на пустой странице, чтобы увидеть, загружается ли оно или нет.
Я хочу отобразить свое изображение после того, как оно сохранено в базе данных, чтобы пользователь увидел его на главной странице в img-теге
Wendelius
Я понимаю это но вы сказали что получаете сообщение об ошибке
"Процедура или функция 'spGetImageById' ожидает параметр '@ID', который не был указан"
Таким образом, одна из проблем может заключаться в том, что вы просто не предоставляете все параметры. Вы показали код для вызова этой процедуры, но не код, который реализует процедуру. Можете ли вы опубликовать инструкцию create procedure?