在asp.net中获取服务器上本地文件的http url路径

时间:2010-12-04 12:43:36

标签: asp.net asp.net-mvc-2

我正在使用ASP.NET和MVC 2,并且无法将本地文件URL转换为服务器地址。这似乎是一个相当简单和常见的任务,但谷歌搜索没有给我很好的答案。 (也许我很讨厌)

我有一个控制器从视图中的html表单中获取文件并将其保存到磁盘。我需要将此文件的真实URL返回给View。无论我使用什么方法,我总是得到一个字符串,其中包含文件的本地路径而不是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 个答案:

答案 0 :(得分:3)

这取决于您存储此文件的位置。如果要将其存储在虚拟目录根目录之外的目录中,则无法访问它。如果文件位于可通过HTTP访问的文件夹中,则只需使用Content方法:

string url = Url.Content("~/Content/Files/foo.txt");