我正在用asp.net语言写一个在线商店
我必须从SQL Server数据库中读取产品图像,然后在数据列表中显示产品图像。
数据列表中的图片:
<img id='image1' src='<%# Eval("k_code", "Imagec.aspx?ImageID={0}") %>'/>
imagec.aspx
后面的代码是:
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["ImageID"] != null)
{
string strQuery = "select m_code, k_Name1, k_pic, k_code from kalaid where k_code = @id";
string strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["SuperConnectionString"].ConnectionString;
SqlCommand cmd = new SqlCommand(strQuery);
cmd.Parameters.Add("@id", SqlDbType.NVarChar).Value = Convert.ToString(Request.QueryString["ImageID"]);
SqlConnection con = new SqlConnection(strConnString);
SqlDataAdapter sda = new SqlDataAdapter();
cmd.CommandType = CommandType.Text;
DataTable dt = new DataTable();
cmd.Connection = con;
try
{
con.Open();
sda.SelectCommand = cmd;
sda.Fill(dt);
}
catch
{
dt = null;
}
finally
{
con.Close();
sda.Dispose();
con.Dispose();
}
if (dt != null)
{
Byte[] bytes = (Byte[])dt.Rows[0]["k_pic"];
if (bytes != null)
{
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "image/jpeg";
Response.AddHeader("content-disposition", "attachment;filename=" + dt.Rows[0]["k_name1"].ToString());
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
}
}
}
我的问题是速度
我可以更改增加页面加载速度的代码吗?
由于
答案 0 :(得分:1)
保存图片的url目录,不要保存图片。 :d
答案 1 :(得分:1)
如果您使用的是SQL 2012或更高版本,则可以将图像存储在启用了完全访问权限的FileTable中,而不是存储在blob列中。然后,可以将文件表目录复制到Web映像文件夹以进行http访问,或者通过指向FileTable UNC路径的虚拟目录进行公开。此方法可以更有效地存储和检索图像,同时为产品图像和数据提供参照完整性的关系优势。
答案 2 :(得分:0)
如果您正在加载一组小图片,您可以将其加入单张图片(在类似Photoshop的应用程序中),然后只加载一张图片,然后在所需的位置显示部分图片。