如果我设法使用Server.MapPath来查找和验证文件的存在,我现在想直接将用户发送到该文件,那么什么是最快的转换方式那绝对路径回到一个相对的网络路径?回到网络相对路径的绝对路径
回答
也许这可能工作:
String RelativePath = AbsolutePath.Replace(Request.ServerVariables["APPL_PHYSICAL_PATH"], String.Empty);
(我使用C#,但可以调整到VB)
(@ Tags2k:我editted上面的回答)
如果您使用了Server.MapPath,那么您应该已经拥有了相对的Web路径。根据MSDN documentation,此方法采用一个变量,路径,它是Web服务器的虚拟路径。所以如果你能够调用这个方法,你应该已经可以立即访问相关的web路径。
这不一定是正确的 - MapPath调用可能已经由另一个方法执行,并从我的文件检查器方法传入/调用,或者(在我的情况下)由许多不同元素构建,其中之一是我的资源目录(定义为“〜/ __ Resources”)。很明显,将用户引导至此路径将导致意想不到的结果。这也是有用的知道,因为有时绝对文件路径可能已经从数据库中拉出,没有其他上下文信息。 – tags2k 2008-08-06 09:00:42
[@tagsk](http://stackoverflow.com/questions/3164#3195) - 我不知道。通过定义方法,如果输入到Server.MapPath中的字符串是有效的并返回物理服务器路径,那么无论您如何生成它,它都必须是有效的虚拟路径。有关在虚拟地址开头处使用波形符号(〜)的信息,请参阅此MSDN文章[ASP.NET Web站点路径](http://msdn.microsoft.com/zh-cn/library/ms178116.aspx) :> ASP.NET包含Web应用程序>根操作符(〜),您可以在服务器中指定路径时使用 > 012ak> c – 2008-08-06 09:30:10
Yaakov - 并非如此。例如,我使用的函数获取根路径并递归返回一个`IEnumerable
有Server.RelativePath(路径)不是很好吗?
好了,你只需要扩展它;-)
public static class ExtensionMethods
{
public static string RelativePath(this HttpServerUtility srv, string path, HttpRequest context)
{
return path.Replace(context.ServerVariables["APPL_PHYSICAL_PATH"], "~/").Replace(@"\", "/");
}
}
有了这个,你可以简单地调用
Server.RelativePath(path, Request);
我知道这是旧的,但我需要考虑虚拟目录(每@ Costo的评论)。这似乎有所帮助:
static string RelativeFromAbsolutePath(string path)
{
if(HttpContext.Current != null)
{
var request = HttpContext.Current.Request;
var applicationPath = request.PhysicalApplicationPath;
var virtualDir = request.ApplicationPath;
virtualDir = virtualDir == "/" ? virtualDir : (virtualDir + "/");
return path.Replace(applicationPath, virtualDir).Replace(@"\", "/");
}
throw new InvalidOperationException("We can only map an absolute back to a relative path if an HttpContext is available.");
}
我喜欢Canoas的想法。不幸的是,我没有提供“HttpContext.Current.Request”(BundleConfig.cs)。
我改变了梅索德这样的:
public static string RelativePath(this HttpServerUtility srv, string path)
{
return path.Replace(HttpContext.Current.Server.MapPath("~/"), "~/").Replace(@"\", "/");
}
- 1. 网络路径使绝对路径 - asp.net
- 2. 相对网络路径VS绝对路径
- 3. 相对路径到网页链接绝对路径的映射
- 4. 相对路径或绝对路径
- 5. 绝对路径和相对路径
- 6. 改变相对路径绝对路径
- 7. Node.js:相对路径和绝对路径
- 8. 更改相对路径和绝对路径的基本路径
- 9. 检测路径是绝对路径还是相对路径
- 10. 检查路径是绝对路径还是相对路径
- 11. 绝对与相对路径
- 12. 相对和绝对路径
- 13. 相对v绝对路径?
- 14. 用绝对路径URL替换相对路径网址
- 15. 输入绝对路径,在PHP返回相对路径
- 16. 网络根的绝对路径
- 17. 网络应用中的绝对路径
- 18. 的Python:绝对路径相对让到另一条路径
- 19. 绝对路径到相对路径的转换
- 20. 从python的相对路径中找到绝对路径
- 21. Spring MVC绝对路径到相对路径
- 22. 改变绝对路径到相对路径
- 23. 绝对路径与磁盘名称(C:\\)到相对路径(〜/)
- 24. 使用绝对路径或相对路径阵营路线
- 25. 绝对路径
- 26. 绝对路径
- 27. 在makefile中,如何获取从一个绝对路径到另一个绝对路径的相对路径?
- 28. python中的绝对路径和相对路径问题
- 29. 结合的绝对路径使用相对路径
- 30. PHP的require_once绝对路径与相对路径(不工作)
这个问题是两岁,要发表评论,不存在当年的能力。 “天啊”。 – tags2k 2010-12-30 18:14:50