如何使用相对路径获取c#中的图像文件?

如何使用相对路径获取c#中的图像文件?,c#,C#,我已经检查了这个线程,目录在IDE中,这对我来说是不正确的。我有一个网站应用程序,需要从同一级别的文件夹img获取图像文件。我可以使用以下代码获取它们: DirectoryInfo path=new DirectoryInfo(@"c:\WebsiteSolution\wwwroot\Chat\img"); FileInfo[] images = path.GetFiles("*"); 但是我想使用类似于\img的东西来替换第一行代码中的参数,这可能吗?调用Server.MapPath实用程序

我已经检查了这个线程,目录在IDE中,这对我来说是不正确的。我有一个网站应用程序,需要从同一级别的文件夹
img
获取图像文件。我可以使用以下代码获取它们:

DirectoryInfo path=new DirectoryInfo(@"c:\WebsiteSolution\wwwroot\Chat\img");
FileInfo[] images = path.GetFiles("*");

但是我想使用类似于
\img
的东西来替换第一行代码中的参数,这可能吗?

调用Server.MapPath实用程序以获取相对路径

DirectoryInfo path = Server.MapPath("~\Chat\img");

调用Server.MapPath实用程序以获取相对路径

DirectoryInfo path = Server.MapPath("~\Chat\img");

您需要找到一个锚点,比如
Application.ExecutablePath
,然后将该锚点与
Path.Combine()
一起使用以访问图像目录

如果您的
应用程序.ExecutablePath
是:
@“c:\WebSiteSolution\wwwroot\chat\code”
,那么您可以使用
字符串imgPath=Path.Combine(Application.ExecutablePath,@.\img”)


如果你很难找到一个好的锚,那么就要考虑一个问题。您可以通过
assembly.getExecutionGassembly().Location

获取正在执行的程序集的路径。您需要找到一个锚点,类似于
应用程序.ExecutablePath
,然后将该锚点与
路径.Combine()
一起使用以到达图像目录

如果您的
应用程序.ExecutablePath
是:
@“c:\WebSiteSolution\wwwroot\chat\code”
,那么您可以使用
字符串imgPath=Path.Combine(Application.ExecutablePath,@.\img”)

如果你很难找到一个好的锚,那么就要考虑一个问题。您可以通过
assembly.getExecutionGassembly()获取执行程序集的路径。对于ASP.Net,使用MapPath-

另外,如果您只需要构造用于呈现页面的路径,只需/Chat/img/My.gif就足够了。

对于ASP.Net,请使用MapPath-


另外,如果您只需要构造用于呈现页面的路径,只需/Chat/img/My.gif就足够了。

相对于什么--应用程序的文件夹?相对于什么--应用程序的文件夹?我不会对IIS中托管的ASP.NET应用程序使用此方法。首先,ExecutablePath很可能是Windows文件夹下的某个可执行文件。此外,我相信IIS会生成程序集的卷影副本;我不确定这会如何影响Assembly.Location属性,但它的值可能不是您所期望的。使用HttpServerUtility.MapPath是获取虚拟路径的物理文件路径的标准方法。感谢您提供的提示。在桌面应用程序编程中,我不得不经常处理这个问题,但我不会做太多的web编程。我不会对IIS中托管的ASP.NET应用程序使用这种方法。首先,ExecutablePath很可能是Windows文件夹下的某个可执行文件。此外,我相信IIS会生成程序集的卷影副本;我不确定这会如何影响Assembly.Location属性,但它的值可能不是您所期望的。使用HttpServerUtility.MapPath是获取虚拟路径的物理文件路径的标准方法。感谢您提供的提示。在桌面应用程序编程中,我不得不经常处理这个问题,但我不太会做web编程。