Получить http URL путь локального файла на сервере в asp.net - PullRequest
2 голосов
/ 04 декабря 2010

Я использую ASP.NET с MVC 2 и не могу преобразовать локальный URL-адрес файла в адрес сервера. Казалось бы, довольно простая и распространенная задача, но поиск в Google не дает мне хороших ответов. (Возможно, я отстой в поиске)

У меня есть контроллер, который берет файл из html-формы в виде и сохраняет его на диск. Мне нужно вернуть реальный URL этого файла обратно в представление. Какой бы метод я не использовал, я всегда получаю строку с локальным путем к файлу вместо http-пути.

Я подозреваю, что URL может быть переведен на http-адрес после развертывания проекта, но мне действительно нужен адрес сервера при отладке без необходимости что-либо жестко кодировать.

Рассмотрим следующий пример в некотором методе контроллера:

string url = Url.RequestContext.HttpContext.Server.MapPath("~/Content/Files/" + Path.GetFileName(file.FileName));
// outputs: "C:\\Users\\xxx\\Documents\\Visual Studio 2010\\Projects\\[ProjectName]\\Content\\Files\\file.png"
// whereas i'd like something like "http://localhost/Content/Files/file.png" instead

есть идеи?

1 Ответ

3 голосов
/ 04 декабря 2010

Это зависит от того, где вы храните этот файл.Если вы храните его в каталоге, который находится за пределами корневого каталога виртуального каталога, вы не сможете получить к нему доступ.Если файл находится в папке, доступной по HTTP, вы можете просто использовать метод Content :

string url = Url.Content("~/Content/Files/foo.txt");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...