получить полный путь к каталогу приложения - PullRequest
4 голосов
/ 07 июля 2011

У меня есть сайт, который использует ASP.NET и C #.

Я пытаюсь сделать что-то подобное

bitmap.Save(@"C:\Documents and Settings\Berzon\Desktop\Kinor\kWebGUI\Images\" + imageName + ".png")

Но я не хочу писать весь этот путь, так как он меняется от компьютера к компьютеру.
Как я могу получить полный путь с C #? (этот путь, где приложение в настоящее время сохраняется)

Ответы [ 8 ]

9 голосов
/ 07 июля 2011

Используйте это:

bitmap.Save(System.IO.Path.Combine(Server.MapPath("~/RELATIVE PATH OF YOUR APPLICATION"), imageName + ".png"));

Или некоторые свойства HttpContext.Current.Request ( ApplicationPath или AppDomain.CurrentDomain.BaseDirectory , например)

2 голосов
/ 07 июля 2011
System.IO.Path.Combine(Server.MapPath("~"), "Folder1\\Folder2\\etc")

Вы можете прочитать о MapPath здесь

2 голосов
/ 07 июля 2011

Получить путь к приложению

string appPath = HttpContext.Current.Request.ApplicationPath;

Преобразование пути виртуального приложения в физический путь

string physicalPath = HttpContext.Current.Request.MapPath(appPath);
1 голос
/ 07 июля 2011

вы можете использовать

Server.MapPath("imageName + ".png");
1 голос
/ 07 июля 2011
AppDomain.CurrentDomain.BaseDirectory

System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,image.png)

если я понял ваш вопрос, вы хотите сохранить его в папке, где находится ваше приложение asp.net

иначе VMATM и отлично

0 голосов
/ 07 июля 2011

Чтобы получить путь к корню приложения, если вы находитесь на странице aspx, вы можете использовать:

Server.MapPath("~/");

Но если вы находитесь в другом классе, который не наследует от Page, вы можетеиспользуйте:

System.Web.HttpContext.Current.Server.MapPath("~/");

После этого используйте объединение путей, чтобы получить путь к определенному файлу

Path.Combine(root, pathFromRootToFile);
0 голосов
/ 07 июля 2011

Я предпочитаю решить это так:

string strPath = string.Format("{0}\\{1}.{2}", HttpContext.Current.Server.MapPath("~\\Images"), imageName, ".png");
bitmap.Save(strPath);

Причины, по которым я предпочитаю такой подход: A) Очень легко пройти через отладчик и посмотреть, что такое strPath, легче понять, что происходит, и исправить, если это не то, что вы ожидаете Б) Использование «+» для объединения строк - плохая привычка. Он менее читабелен, и каждый раз, когда вы объединяете строки, память перераспределяется ... это означает снижение производительности. Вместо этого вы должны использовать строку. Формат ИЛИ StringBuilder.

0 голосов
/ 07 июля 2011

Server.MapPath может помочь может помочь. Читать это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...