如果我设法使用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. Node.js:相对路径和绝对路径
- 6. 绝对路径和相对路径
- 7. 改变相对路径绝对路径
- 8. 检测路径是绝对路径还是相对路径
- 9. 检查路径是绝对路径还是相对路径
- 10. 相对v绝对路径?
- 11. 相对和绝对路径
- 12. 绝对与相对路径
- 13. 用绝对路径URL替换相对路径网址
- 14. 的Python:绝对路径相对让到另一条路径
- 15. Spring MVC绝对路径到相对路径
- 16. 绝对路径与磁盘名称(C:\\)到相对路径(〜/)
- 17. 使用绝对路径或相对路径阵营路线
- 18. 绝对路径
- 19. 在makefile中,如何获取从一个绝对路径到另一个绝对路径的相对路径?
- 20. VB.NET中绝对路径的相对路径
- 21. Elisp中绝对路径的相对路径
- 22. 爬行器,绝对路径的相对路径
- 23. Java Nio相对路径的绝对路径
- 24. 获得相对路径的绝对路径当前目录
- 25. Linux中的绝对路径和相对路径
- 26. php的相对路径和绝对路径
- 27. 确定相对路径的绝对路径
- 28. 如何连接QDir的绝对路径和相对路径?
- 29. preg_replace()绝对路径的相对路径。 (Masking?)
- 30. 绝对路径的相对URL
这个问题是两岁,要发表评论,不存在当年的能力。 “天啊”。 – tags2k 2010-12-30 18:14:50