C# 从SQL数据库asp.net C加载图片#
我的头像存储在数据库中。我使用了数据类型图像作为化身。我想将用户的化身加载到图像控件中,但我无法使其工作。我已尝试过此代码,但没有任何运气:C# 从SQL数据库asp.net C加载图片#,c#,asp.net,sql,image,linq-to-sql,C#,Asp.net,Sql,Image,Linq To Sql,我的头像存储在数据库中。我使用了数据类型图像作为化身。我想将用户的化身加载到图像控件中,但我无法使其工作。我已尝试过此代码,但没有任何运气: public void GetUserAvatar() { string username = Convert.ToString(Session["username"]); var image = from u in dc.Users where u.username ==
public void GetUserAvatar()
{
string username = Convert.ToString(Session["username"]);
var image = from u in dc.Users
where u.username == username
select u.image;
imgAvatar.Controls.Add(image);
}
我想我可能需要将图像保存到一个文件夹中,然后将文件路径保存到数据库中。这似乎更容易和顺利。有什么想法吗
最后,我将图像保存到一个文件夹中,然后保存到数据库的路径。我现在上传图像的代码如下所示:
public void addImage()
{
if (fuAvatar.PostedFile.ContentType.ToLower().StartsWith
("image") && fuAvatar.HasFile)
{
string saveLocation = Server.MapPath("savedAvatars/");
string fileExtension = System.IO.Path.GetExtension(fuAvatar.FileName);
string fileName = Convert.ToString(Session["userid"]);
string savePath = saveLocation + fileName + fileExtension;
fuAvatar.SaveAs(savePath);
string imageDBPath = fileName + fileExtension;
LinqClass1DataContext dc = new LinqClass1DataContext();
int userid = Convert.ToInt32(Session["userid"]);
var tblUser = (from u in dc.Users
where u.userid == userid
select u).First();
tblUser.imagePath = @"\savedAvatars\"+imageDBPath;
dc.SubmitChanges();
lblResult.Text = "Avatar lastet opp!";
}
else lblResult.Text = "Avatar ikke lastet opp!";
}
img.ImageUrl = "Handler.ashx;
并加载图片:
public void GetUserAvatar()
{
int userid = Convert.ToInt32(Session["userid"]);
var varPath = dc.Users.Single(u => (u.userid == userid)).imagePath;
string imagePath = Convert.ToString(varPath);
imgAvatar.ImageUrl = imagePath;
}
您应该添加一个通用处理程序文件(.ashx),并在其中写入如下内容:
string sql = "select image from table1";
SqlCommand command = new SqlCommand(sql, con);
SqlDataReader dReader = command.ExecuteReader();
dReader.Read();
context.Response.BinaryWrite((byte[])dReader["Source"]);
dReader.Close();
然后在页面中执行以下操作:
public void addImage()
{
if (fuAvatar.PostedFile.ContentType.ToLower().StartsWith
("image") && fuAvatar.HasFile)
{
string saveLocation = Server.MapPath("savedAvatars/");
string fileExtension = System.IO.Path.GetExtension(fuAvatar.FileName);
string fileName = Convert.ToString(Session["userid"]);
string savePath = saveLocation + fileName + fileExtension;
fuAvatar.SaveAs(savePath);
string imageDBPath = fileName + fileExtension;
LinqClass1DataContext dc = new LinqClass1DataContext();
int userid = Convert.ToInt32(Session["userid"]);
var tblUser = (from u in dc.Users
where u.userid == userid
select u).First();
tblUser.imagePath = @"\savedAvatars\"+imageDBPath;
dc.SubmitChanges();
lblResult.Text = "Avatar lastet opp!";
}
else lblResult.Text = "Avatar ikke lastet opp!";
}
img.ImageUrl = "Handler.ashx;
读这篇文章,首先我发现。基本上,您需要创建一个用原始图像响应的处理程序 请在下面的链接中找到答案 您必须创建一个处理程序来加载图像,并且您可以将源代码传递给图像
标记。您为什么要将实际图像存储在数据库中?当然,存储文件路径会更好?我必须在这个文件中创建一个新方法吗?或者我可以只使用public void ProcessRequest(HttpContext上下文)?您不需要创建一个新方法,实际上您应该使用ProcessRequest方法:)更多信息可以在这里找到: