我正在使用asp.net c#构建一个社交网站,并且我在检索图像时遇到问题,当我将图像上传到数据库时,它的名称将被更改,并且它保存在我提到的真实路径上。还有我想说它在数据库中保存为其名称。但我无法将其链接到webform。
html代码
<asp:Image ID="Pro_pic" runat="server" Height="233px" ImageUrl="~/Profile/Image/Default.png" style="margin-left: 8px; margin-top: 13px" Width="187px" />
这是文件背后的代码
protected void Page_Load(object sender, EventArgs e)
{
string db = "";
db = ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(db);
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT * FROM [UserData] WHERE Email = '" + Session["Email"].ToString() + "'";
cmd.Connection = con;
SqlDataReader dr;
dr = cmd.ExecuteReader();
while (dr.Read())
{
Pro_pic.ImageUrl = @"C:\Users\Supun\Documents\Visual Studio 2013\WebSites\MeetYou\ProfilePic\"+dr["ProfilePic"];
}
con.Close();
}
这是sql代码
CREATE TABLE [dbo].[UserData] (
[YourName] VARCHAR (50) NULL,
[Email] VARCHAR (50) NOT NULL,
[Password] VARCHAR (50) NULL,
[Gender] VARCHAR (50) NULL,
[Birthday] VARCHAR (50) NULL,
[AboutMe] VARCHAR (50) NULL,
[Country] VARCHAR (50) NULL,
[ID] NVARCHAR (50) NOT NULL,
[ProfilePic ] NVARCHAR (500) NULL,
CONSTRAINT [PK_UserData] PRIMARY KEY CLUSTERED ([Email] ASC)
);
今天有人可以告诉我如何正确地获取这个图片网址吗?
我认为这个错误
Pro_pic.ImageUrl = @"C:\Users\Supun\Documents\Visual Studio 2013\WebSites\MeetYou\ProfilePic\"+dr["ProfilePic"];
答案 0 :(得分:0)
您应该将包含图像的文件夹作为应用程序的子文件夹。将其直接放在应用程序之外的位置会导致此类访问问题。如果您将文件夹(让其命名为#34; Images&#34;)放在您的应用程序位置,那么您可以将ImageUrl属性指定为&#34;〜/ Images /&#34; +你的文件名。
答案 1 :(得分:0)
在Web环境(尤其是ASP.NET和MVC)中处理图像时,应遵循一定的准则。
尽量不要使用byte []流存储图像,然后使用缓慢且未经优化的查询从数据库重建图像。
标准方法是在根目录中创建一个/ Images文件夹,放置图像。
写一个类库:
公共类QueryClass { string img_url; SqlConnection con = new SqlConnection(&#34; // CONNECTION_STRING&#34;); SqlCommand cmd; SqlDataReader阅读器;
public string getImageUrl(){
cmd=new SqlCommand("select * from UserData where WHERE Email = '" + Session["Email"].ToString() + "'",con);
reader=cmd.ExecuteReader();
while(reader.read()){
img_url=reader[8].ToString();
break;
}
return img_url;
}
将url(或Uri)存储到图像中,即Image Path示例:/Images/tree.png并将其绑定到图像控件。
将Url字符串存储为数据库实体,并通过查询检索它。
示例:SELECT img FROM Users WHERE username=@uname
运行查询并将网址存储在一个字符串string img_url=QueryClass.getImageUrl();
最后使用Pro_pic.ImageUrl= "/Images/"+img_url;