~/Account/ フォルダー内にある editprofile という .aspx ページがあります。このページ自体で、ユーザーは新しいユーザー アバターをアップロードしたり、詳細を変更したりできます。
画像が保存されると、テーブル ('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