2016-09-18 31 views
0

显示从数据库中的图像这是我的数据库:我想在标签在asp.net

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 

我想显示从数据库到标签的形象 - 我该怎么做,在asp.net ?

这是我的代码:

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; 
} 
+0

尝试http://stackoverflow.com/questions/12848341/how-do-i-add-an-image-to-a-label –

+0

你试图做什么?所有我看到你将图像保存到数据库中,而没有关于在标签中显示图像。 – feeeper

+0

我试图打电话给我的数据库标签,但它不起作用 – Naeem

回答

0

一个简单的办法是:

<img id="img" runat="server" alt=""/> (instead of an label) 

,并在你的函数

img.Src = "data:image/jpg;base64," + Convert.ToBase64String((byte[])datarow[0]); 
+0

我尝试它,但没有重新调整.src – Naeem

+0

你确实得到了img标签? –

+0

opps,我是通过asp.net创建的,但现在我改变了它,但是我在datarow下面有红线说:它使用像变量 – Naeem