【问题标题】:Image rendered correct link, but cannot load the image图像呈现正确的链接,但无法加载图像
【发布时间】:2013-08-27 20:35:53
【问题描述】:
我已经上传了一张图片到目录~\Files\image\C3-E1-B6-74.png,我把它保存在了数据库中。现在我正在尝试显示此图像。
cshtlm
<img src="@Url.Content(file.FileLink)" alt="test" />
当这个页面被渲染并且我检查图像标签时
<img alt="test" src="C:\Users\thomas\Desktop\Freelauncher1005\Freelauncher\Files\image\C3-E1-B6-74.png">
所以链接正确呈现。当我复制此链接并将其粘贴到我的文件夹浏览器中时,它会打开相应的图像。
在搜索这个问题时我发现了
Images under "image/subfolder" cannot be found in the latest Razor Engine - MVC.NET
我检查了扩展,一切都正确。
有人有其他可能的解决方案吗?
提前致谢
【问题讨论】:
标签:
asp.net
asp.net-mvc
asp.net-mvc-3
asp.net-mvc-4
razor
【解决方案1】:
C:\Users\thomas\Desktop\Freelauncher1005\Freelauncher\Files\image\C3-E1-B6-74.png
这种类型的链接在网络浏览器/页面中不起作用。您需要拥有来自网站根目录的相对路径或绝对路径。例子:
相对路径
<img src="/Files/image/C3-E1-B6-74.png" />
绝对路径
<img src="http://localhost/Freelauncher/Files/image/C3-E1-B6-74.png"/>
我不确定您是如何存储文件信息的,但如果您包含完整的文件路径,这将不适用于任何类型的托管网站。
【解决方案2】:
在数据库中我保存了一个绝对路径。这是完全错误的,要走的路是将文件名保存在数据库中并创建一个为我保存图像的全局变量:
string path = "~/Files/image/"
然后在剃须刀页面中,我可以调用全局变量并在其后传递文件名...
<img src="~/Files/image/@file.FileLink" alt="test" />
ASP.net 永远不会在您的本地计算机上搜索文件/图像,因此您始终必须使用相对路径,例如:~/Files/image/