使用Asp.Net和SQL显示照片库
我最近将照片添加到我的SQL数据库中,并使用Asp:Image将它们显示在*.aspx页面上。此控件的ImageUrl存储在单独的*.aspx页面中。它适用于个人资料图片 我手头有一个新问题。我需要每个用户都能够有自己的照片库页面。我希望照片存储在sql数据库中。储存照片并不困难。问题是显示照片。我希望照片以缩略网格的方式存储,当用户单击照片时,它应该在单独的页面上显示照片 最好的方法是什么。显然,它不是使用Asp:Image。我很好奇是否应该使用Gridview。如果是这样的话,我该怎么做?它们应该是存储在数据库中的缩略图大小吗 一旦图片显示完毕,点击另一页的外观,使其显示正确的图像。我认为通过url发送照片ID是不正确的 下面是我用来显示个人资料图片的页面代码 受保护的无效页面加载(对象发送方、事件参数e) {使用Asp.Net和SQL显示照片库,asp.net,sql,photo,image-gallery,Asp.net,Sql,Photo,Image Gallery,我最近将照片添加到我的SQL数据库中,并使用Asp:Image将它们显示在*.aspx页面上。此控件的ImageUrl存储在单独的*.aspx页面中。它适用于个人资料图片 我手头有一个新问题。我需要每个用户都能够有自己的照片库页面。我希望照片存储在sql数据库中。储存照片并不困难。问题是显示照片。我希望照片以缩略网格的方式存储,当用户单击照片时,它应该在单独的页面上显示照片 最好的方法是什么。显然,它不是使用Asp:Image。我很好奇是否应该使用Gridview。如果是这样的话,我该怎么做?它
您可能会有一个只显示照片的页面(如上面所述),但您的条件会有所不同。您不会使用
WHERE[UserId]='“+User.Identity.Name
,而是必须为数据库中照片的id发送查询字符串id
然后,当你想要在你的aspx页面中显示图片时,你必须在上面加上一个图像html标签
如何在页面上放置html图像标记并不重要。您可以试试
或者。他们应该让您从网格端开始。从url发送imageid时进行更正。查看会话变量或隐藏控件,发布表单并在下一页进行阅读
我会查看gridview,并将模板列与gridview中的html图像标记结合使用。在上传时创建缩略图,并将其存储在数据库中。从那里,您可以轻松检索它。这种方式显示图像更快,并且在显示时无需进行缩略图转换。“此控件的ImageUrl存储在单独的*.aspx页面中。它对配置文件图片非常有用。“-与其使用.aspx页面,不如使用通用ASP.NET处理程序(.ashx)?它们比.aspx稍轻。只需搜索“ASP.NET通用处理程序”“您会发现一些示例。它基本上是您现在在.aspx页面后面的代码,但没有所有页面初始化/呈现开销
“我希望照片以缩略网格的方式存储,当用户单击照片时,它应该在单独的页面上显示照片。”-我认为任何支持项元素模板的ASP.NET可重复控件(如DataGrid、GridView、Repeater、ASP.NET 3.5中的ListView等)在这里应该可以帮你做到这一点。只需根据你的缩略图设置图像或asp:image的高度和宽度。使用href将你在HTML锚中使用的任何标记包装到以“全尺寸”显示图像的页面上。让我们来解构你的问题: 它们的大小应该是存储在数据库中的缩略图大小吗?
是。第一次请求照片缩略图时生成缩略图,并将其缓存在数据库中以备将来访问 显然,不使用Asp:Image是不明智的
使用Asp:Image没有问题。您会满意的 我很好奇是否应该使用Gridview
也许中继器更好,但如果您熟悉gridview,就可以使用它 我认为通过url发送照片ID是不正确的。
这是正确的,但是您应该检查照片是否属于当前用户(不要信任URL) 生成缩略图
您将了解到由.net生成的调整大小的图像质量很差。您应该使用一些GDI功夫来获得高质量的图片。 有关详细信息,请参阅本帖。该控件将帮助您直接从数据库显示图像。您可以将图像字段直接绑定到ImageContent属性,也可以指定是否希望显示为缩略图,并提供缩略图大小
要获得它,请转到如果您不想重新发明轮子,您可以将gallery Server Pro(www.galleryserverpro.com)之类的开放源代码库集成到您的网站中。它是用C#/ASP.NET编写的,可以做您想做的所有事情 罗杰
[免责声明]我是Gallery Server Pro的创建者和首席开发者[/免责声明]是否有人这样做,或者是否有更好的方法来显示照片库。我的意思是,我仍然希望照片存储在sql.+1中,以便使用ashx。图像处理程序也有很多这样的例子。
string sql = "SELECT [ProfileImage] FROM [UserProfile] WHERE [UserId] = '" + User.Identity.Name.ToString() + "'";
string strCon = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["SocialSiteConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(strCon);
SqlCommand comm = new SqlCommand(sql, conn);
conn.Open();
Response.ContentType = "image/jpeg";
Response.BinaryWrite((byte[])comm.ExecuteScalar());
conn.Close();
}