【发布时间】:2011-09-30 11:53:13
【问题描述】:
我有一个使用 ASP.NET 和 C# 的网站。
我正在尝试做这样的事情
bitmap.Save(@"C:\Documents and Settings\Berzon\Desktop\Kinor\kWebGUI\Images\" + imageName + ".png")
但我不想写整个路径,因为它会随着计算机的变化而变化。
如何使用 C# 获得完整路径? (此路径是当前正在保存的应用程序)
【问题讨论】:
我有一个使用 ASP.NET 和 C# 的网站。
我正在尝试做这样的事情
bitmap.Save(@"C:\Documents and Settings\Berzon\Desktop\Kinor\kWebGUI\Images\" + imageName + ".png")
但我不想写整个路径,因为它会随着计算机的变化而变化。
如何使用 C# 获得完整路径? (此路径是当前正在保存的应用程序)
【问题讨论】:
使用这个:
bitmap.Save(System.IO.Path.Combine(Server.MapPath("~/RELATIVE PATH OF YOUR APPLICATION"), imageName + ".png"));
或 HttpContext.Current.Request 的一些属性(例如ApplicationPath 或AppDomain.CurrentDomain.BaseDirectory)
【讨论】:
检索应用程序路径
string appPath = HttpContext.Current.Request.ApplicationPath;
将虚拟应用路径转换为物理路径
string physicalPath = HttpContext.Current.Request.MapPath(appPath);
【讨论】:
System.IO.Path.Combine(Server.MapPath("~"), "Folder1\\Folder2\\etc")
您可以阅读有关 MapPath here
【讨论】:
你可以使用
Server.MapPath("imageName + ".png");
【讨论】:
AppDomain.CurrentDomain.BaseDirectory
System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,image.png)
如果我理解您的问题,您希望将其保存在您的 asp.net 应用程序所在的文件夹中
其他 VMATM ans 是完美的
【讨论】:
Server.MapPath 可以提供帮助。 Read this
【讨论】:
我更喜欢这样解决:
string strPath = string.Format("{0}\\{1}.{2}", HttpContext.Current.Server.MapPath("~\\Images"), imageName, ".png");
bitmap.Save(strPath);
我喜欢这种方法的原因是: A) 使用调试器很容易单步执行并查看 strPath 是什么,更容易理解正在发生的事情并修复如果它不是您所期望的。 B)使用“+”连接字符串是一个坏习惯。它的可读性较差,每次连接字符串时都会重新分配内存……这意味着性能较低。您应该改用 string.Format OR StringBuilder。
【讨论】:
为了获得应用程序根目录的路径,如果你在一个aspx页面你可以使用:
Server.MapPath("~/");
但是,如果您在另一个不从 Page 继承的类中,您可以使用:
System.Web.HttpContext.Current.Server.MapPath("~/");
然后使用路径组合来获取特定文件的路径
Path.Combine(root, pathFromRootToFile);
【讨论】: