我有很多文件夹,其中每个图像都存储在我的localdisk上。 该路径在web.config中引用,因此有一天当我将项目移到联机时,我可以轻松地更改此文件夹路径。
<add key="MyImagesFolder" value="E:\MyImages\" />
我在剃刀视图中加载此值并与图像属性一起使用img src显示图像
@{
string imagesFolder = ConfigurationSettings.AppSettings["MyImagesFolder"].ToString();
foreach (var item in @Model.Images) {
<img src="@imagesFolder/@item.FilePath" alt="@item.Description" />
}
}
在调试中捕获的图像src值是
E:\\MyImages\\100/1.jpg
其中100表示MyImages文件夹下的文件夹。
图像根本无法渲染。
我做错了什么?
答案 0 :(得分:1)
您正在使用指向服务器文件系统上图像路径的src属性呈现html img标记。您的src属性必须包含Web应用程序中的URL,这些URL将提供通过HTTP协议访问HTTP客户端(Web浏览器)的图像。
src attribs需要看起来像:
http://yourwebserver/yourapp/images/1.jpg
或相对网址:
./yourapp/images/1.jpg
问题是网页浏览器无法直接抓取您的网络服务器文件系统
一种可能的解决方案是将您的images文件夹放入MVC项目中,并将相对URL呈现给img标签的src属性。
如果您只需要在与Web服务器相同的计算机上运行Web客户端,那么渲染src属性的方式也是有效的,但在Web服务器外部运行的客户端不会看到图像。 如果您要经历此路径,则仍需要将这些src属性呈现为具有文件架构的URL,即
file:///c:/images/1.jpg