0

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

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

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

4 回答 4

2

服务器上的文件在哪里?

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

“Images”文件夹是否在应用程序的根目录中?尝试在第二个版本前面加上 a"~"来表示:

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

仅用于网站的图像文件夹可能有点矫枉过正,但它肯定是灵活的。然后,您可以在需要更改它或将其部署到其他服务器时通过配置文件将其指向任何文件夹。

于 2013-10-31T11:18:55.487 回答
2

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

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

值得检查

Server.MapPath(".")、Server.MapPath("~")、Server.MapPath(@"\")、Server.MapPath("/")。有什么区别?

于 2013-10-31T11:25:24.833 回答
1

尝试

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

于 2013-10-31T11:28:38.517 回答
0
<!-- language: c# -->
Image image = Image.FromFile ("Images\\sf.gif");
//OR
Image image = Image.FromFile (@"Images\sf.gif");
于 2013-10-31T11:21:12.477 回答