學習ASP的時候,自己總結的Server.Mappath的用法
語法:Server.Mappath(path) 'path為你要指定的路徑
用途:將path指定的虛擬路徑轉化為實際路徑
范例:
1)Server.Mappth("page.asp") '找出頁面page.asp的實際路徑
2)Server.Mappth("/") '找出根目錄
3)Server.Mappath("./") '找出現在的目錄 (注:很多書上都這么寫,但自己寫過后提示為錯誤,也有這么寫的Server.Mappath("./"))
注意:參數path必須為虛擬路徑,否則將出錯!
示例:
如果你當前調用Server.Mappath的頁面為,而你把文件存到http://www.xxx.com/putinfo/img里,則可以用以下兩種方法之一:
1) path="/putinfo/img"
2) path="img"
也就是說:如果path的第一個字符為“/”或者“\”,則Server.Mappath會將它解釋成從根目錄開始的路徑,否則Server.Mappath會將它解釋成從當前目錄開始的路徑。
獲取網站根目錄的方法有幾種如:
Server.MapPath(Request.ServerVariables["PATH_INFO"])
Server.MapPath("/")
Server.MapPath("")//當前代碼文件所在的目錄路勁
Server.MapPath(".")
Server.MapPath("../")
Server.MapPath("..")
Page.Request.ApplicationPath
以上的代碼在http://localhost/EnglishClub/manage/WebForm1.aspx頁面
運行結果:
C:\Inetpub\wwwroot\EnglishClub\manage\WebForm1.aspx
C:\Inetpub\wwwroot\
C:\Inetpub\wwwroot\EnglishClub\manage
C:\Inetpub\wwwroot\EnglishClub\manage
C:\Inetpub\wwwroot\EnglishClub\
C:\Inetpub\wwwroot\EnglishClub
以上的方法可以在.aspx中訪問,但是如果你在。cs文件就不能用。
HttpContext.Current.Server.MapPath();
System.Web.HttpContext.Current.Request.PhysicalApplicationPath 在.cs文件中可以用。但是HttpContext.Current.Server.MapPath();這個獲取的是文件的路徑而不是根目錄。
只有System.Web.HttpContext.Current.Request.PhysicalApplicationPath 這個才是獲取的根目錄,在寫獲取數據庫路徑是應該用這個,其他的都有問題。
System.Web.HttpContext.Current.Request.PhysicalApplicationPath
和Server.MapPath("~/")效果是一樣的。
Server.MapPath("~/");//無論代碼所在的文件的、頁面路勁是什么,永遠返回 C:\Inetpub\wwwroot\EnglishClub\(就是當前程序運行的所在根目錄)
如果存儲 附件的路勁 進數據庫的話,不應該把絕對路勁存進去。應該只存儲 文件名部分。例如:
/uploads/abc.txt
當需要瀏覽文件的時候,在在讀取出來的路徑:(即/uploads/abc.txt),前面+網站的路勁:例如:
http://abc.com+"/uploads/abc.txt"
