2012-01-20 4 views
0

Я проверил эту тему How to get files in a relative path in C#, каталог находится в IDE, что неверно для меня. У меня есть приложение для веб-сайта, необходимо получить файлы изображений из той же папки уровня img. Я могу использовать следующий код, чтобы получить их:Как получить файлы изображений в C# с помощью относительного пути?

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

Но я хочу использовать что-то вроде .\img заменить параметр в первой строке кода, это возможно?

+0

Относительно чего - папка приложения? –

ответ

6

Позвоните в утилиту Server.MapPath, чтобы получить относительный путь.

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

Вы должны найти якорь - что-то вроде Application.ExecutablePath - и затем использовать этот якорь с Path.Combine(), чтобы достичь вашего каталога изображений.

Если ваш Application.ExecutablePath были: @"c:\WebSiteSolution\wwwroot\chat\code", то вы можете использовать string imgPath = Path.Combine(Application.ExecutablePath, @"..\img");

Если у вас есть трудно найти хороший якорь, есть куча рассмотреть. Вы можете получить путь к исполняющей сборке через Assembly.GetExecutingAssembly().Location

+0

Его для веб-приложения. – Lloyd

+0

Я бы не использовал этот подход для приложения ASP.NET, размещенного в IIS. Во-первых, ExecutablePath, скорее всего, будет исполняться в папке Windows. Кроме того, я считаю, что IIS создает теневую копию сборок; Я не уверен, как это влияет на свойство Assembly.Location, но ценность этого может быть не такой, какой вы ожидаете. Использование HttpServerUtility.MapPath является стандартным способом получения физического пути к файлу виртуального пути. –

+0

Спасибо за советы. Мне приходилось много разбираться в этой проблеме в программировании настольных приложений, но я не занимаюсь веб-программированием. – antiduh

Смежные вопросы