5

Visual Studio 2012-ASP.net-MVC 4

データベースに保存されているサーバーパスからの画像を表示するのに問題があります。

HttpPostedFileBaseを使用して、ユーザーがアップロードしたファイルを取得しています。

using (var uow = _db.CreateUnitOfWork())
            {
                if (imageUpload != null && imageUpload.ContentLength > 0)
                {
                    var fileName = Path.GetRandomFileName() + Path.GetExtension(imageUpload.FileName);
                    var path = Path.Combine(System.Web.Hosting.HostingEnvironment.MapPath("~/Uploads"), fileName);
                    imageUpload.SaveAs(path);
                    achievement.ImageLoc = path;
                }

                uow.Add(achievement);
                Save(uow);
                return true;
            }

これにより、アップロードされたファイルの絶対パスがデータベースに保存され、ファイルがサーバーに保存されます。このパスを取得して画像ファイルをビューに表示しようとすると、ファイルが見つからないような空白の四角だけが表示されます(右クリック->画像のURLをコピーすると約:空白)。パスを別のビューで使用して、ユーザーがファイルをダウンロードできるようにしているため、パスが正しいことがわかります。これは正しく機能しています。また、古いファイルを正常に削除して新しいファイルをアップロードするファイルをユーザーが編集できるようにしています。私が抱えている唯一の問題は、ビューに画像を表示することです。

私が試してみました:

<img src="@Html.Encode(Model.ImageLoc)" />
<img src=@Url.Content(Model.ImageLoc)" />

誰かが何かを提案することができますか?

4

2 に答える 2

13

画像への絶対パスをデータベースに保存しましたが、相対パスで参照する必要があります。

<img src="@Url.Content("~/Uploads/" + System.IO.Path.GetFileName(Model.ImageLoc))" alt="" />

結果のHTMLは次のようになります。

<img src="/Uploads/tccxdfu0.nde.jpg" alt="" />

ではなく:

<img src="\\PDC2\sites\t\<site.co.uk>\public_html\Uploads\tccxdfu0.nde.jpg" alt="" />

クライアントはサーバーからそのようなフォルダにアクセスできないためです。

于 2012-10-09T16:30:10.170 に答える
0

使用を見てください

http://msdn.microsoft.com/en-us/library/system.web.mvc.mvchtmlstring%28VS.100%29.aspx エンコードされているため、期待どおりに出力されないようです。

于 2012-10-09T16:21:10.840 に答える