我有一个名为 editprofile 的 .aspx 页面,可以在我的 ~/Account/ 文件夹中找到。该页面本身允许用户上传新的用户头像、更改他们的详细信息等。
当图像被保存时,它被保存到一个表('userprofiles')中一个名为 AvatarURL 的字段中,其相对路径如下:UserProfileAvatar/image.jpg
我有一个单独的页面,位于上面的主解决方案目录中,名为 detail.aspx。当我尝试显示图像时,我遇到了图像没有出现的问题,发现这是因为写入数据库的路径是相对于“帐户”文件夹的。我已经设法通过编辑我的数据库中的记录并在其顶部附加额外的级别来实现此功能:Account/UserProfileAvatar/image.jpg 并出现图像。
如何补偿诸如此类的环境因素,以便我的解决方案中的不同页面(无论它们在文件夹层次结构中的哪个位置)可以毫无问题地引用放置在此文件夹中的图像?
这是我背后的代码:
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim sql Dim cmd Dim conn As OleDbConnection = New OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString) If Not fu_avatar.HasFile Then sql = "UPDATE userprofiles SET EmailAddress=@f1, Description=@f2 WHERE TravellerName=@f3" cmd = New OleDbCommand(sql, conn) cmd.Parameters.AddWithValue("@f1", email.Text) cmd.Parameters.AddWithValue("@f2", description.Text) cmd.Parameters.AddWithValue("@f3", User.Identity.Name) Else sql = "UPDATE userprofiles SET EmailAddress=@f1, Description=@f2, AvatarURL=@f3 WHERE TravellerName=@f4" cmd = New OleDbCommand(sql, conn) cmd.Parameters.AddWithValue("@f1", email.Text) cmd.Parameters.AddWithValue("@f2", description.Text) cmd.Parameters.AddWithValue("@f3", "UserProfileAvatar/" & User.Identity.Name & ".jpg") cmd.Parameters.AddWithValue("@f4", User.Identity.Name) Dim fileLocationOnServerHardDisk = Request.MapPath("UserProfileAvatar") & "/" & User.Identity.Name & ".jpg" fu_avatar.SaveAs(fileLocationOnServerHardDisk) End If conn.Open() cmd.ExecuteNonQuery() conn.Close() DisplayData() SaveConfirmation.Visible = True End Sub