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 回答