一、關於相對路徑和絕對路徑
相對路徑轉絕對路徑
d:\web1\uploads。
關於波浪線 ~
在某些場合下,比如**使用了url重寫元件(注意,不是指mvc**),則會引發一些路徑上的問題。比如**根目錄下有個頁面,而url重寫中的配置為靜態html頁面,這樣就多了兩個路徑。在引用資源檔案的時候會有問題。一
種是在後台**裡用「~\」來獲取根目錄,或者用resolveurl()方法。但其實最高效和簡潔的寫法是直接使用乙個「/」來表示根目錄。比如
二、斜槓和反斜槓
url使用的是「/」,所以在處理url(解析和轉向)的時候,都得給使用者返回「/」這個方向的斜槓。其中
「/」來表示根目錄。
./ 當前目錄。
相對當前目錄的上層目錄。
windows中使用的是「\」,因此在做io操作,比如把使用者上傳的檔案儲存到硬碟的時候得用「\」這個方向的斜槓。
其實這裡會有個問題,比如我要把**的上傳資料夾的路徑做成可配置的。那我到底是在配置檔案中寫「\uploads」還是「/uploads」呢?畢竟這個常量需要同時給url和程式去讀。當然,你可以在程式裡做進一步的處理。
三、路徑的拼接
最簡單的拼接就是兩個字串用「+」操作符拼起來。遇到已知的路徑,這種做法是木有問題的。但有時候我們獲取的變數並不好控制。雖然可能經過驗證邏
輯處理,但驗證並不總是靈活的。比如這個路徑:「uploads」,它和「uploads\」意義是一樣的。但如果直接用字串相加把這個路徑和另乙個拼
起來,比如「2011」,顯然就會有問題:前者少乙個斜槓:uploads2011,而我們需要的結果是uploads\2011。
這時候我們需要借助system.io.path類中的combine方法來做這件事。下面兩條語句返回的結果都是一樣的:
path.combine(@"uploads", "2011"); path.combine(@"uploads",
"2011"); 複製** 結果都是:uploads\2011
注意,不要在第二個引數前加「\」,比如把第二個引數換成「\2011」,返回值就會變成「\2011」,丟失了「uploads」。
四、server與路徑有關的屬性和方法
2、currentexecutionfilepath 獲取當前請求的虛擬路徑。不同於
filepath,差別在於如果請求已在伺服器**中被重定向,則 currentexecutionfilepath就是正確的。對於此示例,該屬性將返回以下內容:
如果作為對 transfer 或 execute
進行呼叫的結果,您獲取正在執行的**中的屬性,則路徑將反映該**的位置。
3、filepath 獲取當前請求的虛擬路徑。對於此示例,該屬性將返回以下內容:
不同於 currentexecutionfilepath,filepath 不反映伺服器端轉換。
4、path 獲取當前請求的虛擬路徑。對於此示例,該屬性將返回以下內容:
c:\inetpub\wwwroot\
6、physicalpath 獲取與請求的
url 對應的物理檔案系統路徑。對於此示例,該屬性將返回以下內容:
注意 傳遞給
路徑詳解 絕對路徑,相對路徑,根相對路徑
路徑詳解 重點 1 絕對路徑 1 什麼是絕對路徑 檔案從最高端目錄下開始的完整路徑 1 訪問網路資源 1 由以下四個部分組成 1 協議名稱 2 主機名 ip位址,網域名稱 3 目錄路徑 4 檔名 ex 1 協議名 2 主機名 網域名稱 3 目錄路徑 img4 檔名 bd logo1.png 2 訪問...
絕對路徑 根相對路徑和文件相對路徑
相對路徑包括根相對路徑 site root 和文件相對路徑 document 兩種。根相對路徑 也稱相對跟目錄 的路徑以 開頭,路徑是從當前站點的根目錄開始計算。比如我們前面建的d盤myweb目錄就是名為 myweb 的站點,這時 index.htm 路徑,就表示檔案位置為d myweb index...
相對url和相對路徑
比如 通過 向上一級 結果 g site other index.htm g site web article 01.htm 如圖所示 index.htm要想鏈結到01.htm這個檔案,正確的鏈結應該是 web article 01.htm或者.web article 01.htm 在超連結中.可以...