asp.net中的n种path

转载

在web服务器端开发中经常会遇到各种不同形式的path,而且经常记不清楚如何获取到某种特定格式,今天抽了点时间把常用的path获取方法与格式做了一个简单的对照表,以备日后查用。

Request获取的信息
Request.AppRelativeCurrentExecutionFilePath                  ~/SysOption/BillingSetup1.aspx 
Request.ApplicationPath                                                 /
Request.CurrentExecutionFilePath                                   /SysOption/BillingSetup1.aspx 
Request.FilePath                                                            /SysOption/BillingSetup1.aspx 
Request.Path                                                                /SysOption/BillingSetup1.aspx 
Request.PathInfo                                                          什么都没有(待测其他用法)
Request.PhysicalApplicationPath                                      D:\VssWorkFolder\British_School_MIS\src\WebSite\ 
Request.PhysicalPath                                                      D:\VssWorkFolder\British_School_MIS\src\WebSite\SysOption\BillingSetup1.aspx 
Request.UserHostAddress                                              192.168.1.6 
Request.UserHostName                                                  192.168.1.6 
Request.Url.ToString()                                                    http://192.168.1.6/SysOption/BillingSetup1.aspx?x=d 
Request.UrlReferrer                                                        空引用或者跳转源页面地址         

Request.ServerVariables集合中获取到的相关信息:
左列是服务器变量名,右侧是值,值是通过Request.ServerVariables[服务器变量名]获取的
APPL_MD_PATH : /LM/W3SVC/894523/Root
APPL_PHYSICAL_PATH : D:\VssWorkFolder\British_School_MIS\src\WebSite\
INSTANCE_META_PATH : /LM/W3SVC/894523
LOCAL_ADDR : 192.168.1.6
PATH_INFO : /SysOption/BillingSetup1.aspx
PATH_TRANSLATED : D:\VssWorkFolder\British_School_MIS\src\WebSite\SysOption\BillingSetup1.aspx
REMOTE_ADDR : 192.168.1.6
REMOTE_HOST : 192.168.1.6
SCRIPT_NAME : /SysOption/BillingSetup1.aspx
SERVER_NAME : 192.168.1.6
URL : /SysOption/BillingSetup1.aspx

Request.ServerVariables是一个很强大的工具,可以帮助我们获取很多client和web宿主的信息,有兴趣的朋友可以通过以下代码看看它到底包含什么信息
        foreach (string s in Request.ServerVariables)
        {
            Response.Write(s + "  :  " + Request.ServerVariables[s] + "<br /><br />");
        }

path转换
1.转换为服务器端路径(Server.MapPath)
web服务器端开发设计一个有趣的问题就是,地址转换。比如http地址/images/a.txt,如果你想在服务器端通过io读取这个文件,就得有这个文件的“本机地址(形如c:\windows\system32\xx.dll)”,这时Server.MapPath就很有用了
Response.Write(Request.MapPath(Request.Path));        输出为 D:\VssWorkFolder\British_School_MIS\src\WebSite\SysOption\BillingSetup1.aspx
2.转换为http地址(Page.ResolveClientUrl Page.ResolveUrl)
Response.Write(Page.ResolveClientUrl("~/a/a.jpg"));      输出为 ../a/a.jpg 
Response.Write(Page.ResolveUrl("~/a/a.jpg"));              输出为 /a/a.jpg 

另外,我们使用upload控件上传文件时,用HttpPostedFile 
例如:
HttpPostedFile file = context.Request.Files[i];//这里的context.Request.Files就是上传的文件集合.
PS:此处乃是利用HttpHandler..在Page页面中可以自己用其他办法多文件上传.
接着如何保存文件呢?
利用HttpPostedFile的SaveAs方法即可,如: file.SaveAs(SpecifiedPath);
此处的SpecifiedPath是上传文件的绝对路径.
至于如何获取上传文件的路径.我们可以利用Path类.来操作File.HttpPostedFile类中也包含了文件的基本信息.如文件名,大小,路径等等.Path类操作更齐全而已.接着就可以利用Server.MapPath()方法来进行转换.
posted @ 2009-08-22 22:53  年轻国王  阅读(240)  评论(0编辑  收藏  举报