检索图像“不支持URI格式”& “FileNotFoundException异常”

时间:2013-10-31 11:10:21

标签: c# asp.net-mvc

我只是想在我的项目中检索图像。但我无法在在线服务器上运行它。

代码在本地服务器上正常工作

Image image = Image.FromFile("C:\\Users\\Nico\\Desktop\\Project\\MvcApplication1\\MvcApplication1\\Images\\sf.gif");

但我无法在我的服务器上部署

以下代码提供了例外 "FileNotFoundException"

Image image = Image.FromFile("\\Images\\sf.gif");

此代码提供“不支持的URI格式”

Image image = Image.FromFile("http://www.mydomain.com/Images/sf.gif");

感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

服务器上的哪个位置是文件?

第一个可行,因为您正在引用现有文件。第二个不起作用,因为它无法找到相对于当前路径的文件。您可能希望对路径更加明确。第三个肯定不会工作,因为那不是一个文件,它是一个URL。 (HTTP不是文件系统。)

应用程序根目录中的“Images”文件夹?尝试使用"~"添加第二个版本以指示:

Image image = Image.FromFile("~/Images/sf.gif");

如果“Images”文件夹可以从不仅仅是应用程序的根目录更改,您还可以使用配置设置来指示图像的位置。像这样简单:

<add key="imagesRoot" value="C:\Users\Nico\Desktop\Project\MvcApplication1\MvcApplication1\Images\" />

然后您可以使用Path对象构建更完整的路径:

Image image = Image.FromFile(Path.Combine(ConfigurationManager.AppSettings["imagesRoot"], "sf.gif"));

对于可能过度杀伤的网站的图像文件夹,但它肯定是灵活的。然后,只要您需要更改它或将其部署到其他服务器,您就可以通过配置文件将其指向任何文件夹。

答案 1 :(得分:2)

您可以使用Server.MapPath让代码检测网站/应用程序的根文件夹。

Image image = Image.FromFile(Path.Combine(Server.MapPath("/Images"), "sf.gif"));

值得检查

Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\"), Server.MapPath("/"). What is the difference?

答案 2 :(得分:1)

尝试

Image image = Image.FromFile(Server.MapPath(“\ Images \ sf.gif”));

答案 3 :(得分:0)

<!-- language: c# -->
Image image = Image.FromFile ("Images\\sf.gif");
//OR
Image image = Image.FromFile (@"Images\sf.gif");