繁体   English   中英

从SQL Server表到ASP.NET图像控件的图像

[英]Image from SQL Server Table to asp.net image control

SqlCommand cmd = new SqlCommand("select top 1(CMTID),COMMENT,HEADING from FTAB ORDER BY CMTID DESC", conn);
conn.Open();

SqlDataReader sdr = cmd.ExecuteReader();

if (sdr.Read() == true)
{
    lblHead.Text = sdr["HEADING"].ToString();
    lblData.Text = sdr["COMMENT"].ToString();

}

conn.Close();

那就是从表中检索正常数据值的代码,现在我想从SQL Server获取图片,该图片另存为Binary数据,该代码在底部提到。 所以我想将图片检索到asp.net的Image控件中; 请指导我。

if (FileUpload1.HasFile)
{
        conn.Close();

        String SqlQery;
        SqlQery = "select max(CMTID) from FTAB";

        SqlCommand cmdid = new SqlCommand(SqlQery, conn);
        conn.Open();

        MaxID = (int)(cmdid.ExecuteScalar()) + 1;

        conn.Close();

        byte[] img = new byte[FileUpload1.PostedFile.ContentLength];
        HttpPostedFile myimg = FileUpload1.PostedFile;
        myimg.InputStream.Read(img, 0, FileUpload1.PostedFile.ContentLength);
        SqlCommand cmd = new SqlCommand("insert into FTAB (CMTID, IMAGEDT, COMMENT, DATETM, HEADING) values (@imgid, @image, @comment, @datetm, @heading)", conn);

        SqlParameter imgid = new SqlParameter("@imgid",SqlDbType.Int);
        imgid.Value = MaxID;
        cmd.Parameters.Add(imgid);

        SqlParameter uploading = new SqlParameter("@image", SqlDbType.Image);
        uploading.Value = img;
        cmd.Parameters.Add(uploading);

        SqlParameter cmtt = new SqlParameter("@comment", SqlDbType.NVarChar);
        cmtt.Value = RadTextBox3.Text;
        cmd.Parameters.Add(cmtt);

        SqlParameter dttm = new SqlParameter("@datetm", SqlDbType.DateTime);
        dttm.Value = DateTime.Now;
        cmd.Parameters.Add(dttm);

        SqlParameter hhding = new SqlParameter("@heading", SqlDbType.NVarChar);
        hhding.Value = RadTextBox8.Text;
        cmd.Parameters.Add(hhding);

        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();

        lblHead.Text = "Image uploaded";
    }
    else
    {
        lblHead.Text = "No file selected";
    }

尝试这个

SqlCommand cmd = new SqlCommand("select IMAGEDT from FTAB", new SqlConnection("your connection string"));
object data = cmd.ExecuteScalar();
byte[] imgBytes = (byte[])data;

System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image();

string filePath = Server.MapPath("temp") + "//" + "img"+DateTime.Now.Ticks.ToString()+".png";
FileStream fs = File.Create(filePath);
fs.Write(imgBytes, 0, imgBytes.Length);
fs.Flush();
fs.Close();

img.ImageUrl = filePath;

但是我想这不是最好的方法,您应该像在网站中一样将上传的图像另存为文件,并在数据库中保存该文件的路径。

瑜伽士的回答原则上是正确的,但需要Web服务器目录“ temp”并在IIS目录上具有写访问权。

您还可以使用图像处理程序解决问题, 如另一个SO问题中所述 数据库检索以相同的方式完成,但是呈现是从流而不是临时文件进行的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM