我正在使用 mvc EF6 来显示来自SQL Server数据库的图片,
我们已将图像保存到本地文件夹及其到数据库的URL。
做得很好
图片网址保存
C:\ Users \用户函数naveed \桌面\端到端\ UserImages \ 6360831428333175151 - 后-teeth.jpg
然后我在视图中使用下面的代码来显示图片。
@model IEnumerable<iSmileFinal.Models.Imaging>
@if (Model != null)
{
<div class="adsm-sec">
@foreach (var vad in Model)
{
<div id="img">
<div class="adsm-image-wraper">
@*@{string imagePath = Url.Content("~/UserImages/");}*@
@*<img src='@Url.Content("~/UserImages/")' alt="no photo" />*@
<img src='@Url.Content(vad.ImageUrl)' alt="no photo" class="adsm-image" />
<img src='@Url.Content(String.Format(vad.ImageUrl))' style="width:200px; height:90px;" />
</div>
</div>
<img>@Html.DisplayFor(modelItem => vad.ImageUrl)
@Html.DisplayFor(modelItem => vad.ImageType)
@Html.DisplayFor(modelItem => vad.Comments)
}
</div>
}
但它没有显示图像。 它显示如(见图)
我使用谷歌浏览器和FF。
答案 0 :(得分:3)
C:\ Users \用户函数naveed \桌面\端到端\ UserImages \ 6360831428333175151 - 后-teeth.jpg
这不是图片网址
这是文件的物理路径。上传图像时,不应将其存储在数据库中。相反,您应该存储相对于您的Web应用程序的URL /唯一文件标识符。
类似yourSite/UserImages/uniqueFileName.jpg
或uniqueFileName.jpg"
现在,当您呈现页面时,请从db表中读取此值,并使用此相对URL作为图像src
属性。如果您只是存储文件名,则可能需要将其附加到存储文件位置"UserImages\"+yourFileNameVariable;
并使用它来使其相对
如果UserImages
目录位于应用程序的Web根目录中,则可以执行此操作
<img src="@Url.Content("~/UserImages/yourFileName.png")"/>
如果要在db表中存储文件名,请将yourFileName.png
替换为c#变量/模型属性名称。
例如,如果你的model / viewmodel有一个名为ImageName
的属性,它有唯一的文件名(只是文件名),你可以这样做
<img src="@Url.Content("~")/Uploads/@Model.ImageName"/>
@Url.Content("~")
将返回到网络根目录的相对路径
编辑:根据评论。
显示所有项目。您可以在循环中移动此图像标记。
@model IEnumerable<iSmileFinal.Models.Imaging>
@if (Model != null)
{
<div class="adsm-sec">
@foreach (var vad in Model)
{
<img src="@Url.Content("~")/Uploads/@vad.ImageName" />
}
</div>
}
假设Imaging类具有ImageName
属性,您将在其中加载存储在~/Uploads
目录下的文件名。