0

如何在不包含脚本名称的情况下获取服务器名称 + 文件夹名称?

string filePath = Request.QueryString.Get("filepath");

string serverPath = Request.ServerVariables["SERVER_NAME"] + "/";
string fullUrl = "http://" + serverPath + filePath;
Response.Write(fullUrl);

上面的代码缺少文件夹名称。

4

2 回答 2

0

您不能完全做到这一点,因为 HTTP 对什么是文件夹和什么是文件“视而不见”。

您可能熟悉诸如http://www.acme.com/products/view.asp之类的 URL,但完全有效的 URL 也可能是http://www.acme.com/products/view,因此您不能区分文件夹和文件名。

您可以做什么,前提是:

  1. 您了解您的应用程序并且知道它只运行文件(与运行某些逻辑代码的某些路由机制相反,例如在 MVC 中)
  2. 每个文件都包含一个扩展名

就是自己解析路径字符串,在路径末尾寻找file.ext模式。

于 2013-01-18T04:44:45.603 回答
0

本页演示了 HttpRequest 的各个部分是如何分解的。您可以Request.FilePath像这样获取并删除最后一段:

string directory = Request.FilePath.Remove(Request.FilePath.LastIndexOf('/'));
于 2013-01-18T05:43:28.120 回答