繁体   English   中英

检索图像“不支持URI格式”和“ FileNotFoundException”

[英]Retrieve image “URI formats no supported” & “FileNotFoundException”

我只是想在我的项目中检索图像。 但是我无法使其在联机服务器上工作。

这段代码在本地服务器上运行良好

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");

任何帮助表示赞赏。

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

第一个有效,因为您引用的是现有文件。 第二个文件可能不起作用,因为它找不到相对于当前路径的文件。 您可能希望对路径更加明确。 第三个绝对不起作用,因为这不是文件,而是URL。 (HTTP不是文件系统。)

“图像”文件夹位于应用程序的根目录中吗? 尝试在第二个版本之前加上"~"以表明:

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

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

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

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

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

对于仅是网站的图片文件夹而言,这可能是过大的选择,但它肯定是灵活的。 然后,您可以在需要更改或将其部署到其他服务器时,通过配置文件将其指向任何文件夹。

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

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

值得检查

Server.MapPath(“。”),Server.MapPath(“〜”),Server.MapPath(@“ \\”),Server.MapPath(“ /”)。 有什么区别?

尝试

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM