這篇文章給大家介紹如何淺析ASP.NET虛擬主機(jī)在文件目錄管理時(shí)的隱患,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
成都創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷,提供成都網(wǎng)站制作、做網(wǎng)站、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營(yíng)銷、微信平臺(tái)小程序開發(fā)、公眾號(hào)商城、等建站開發(fā),成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢(shì)。
ASP.NET虛擬主機(jī)在文件目錄管理時(shí)的隱患是什么么?首先讓我們看一個(gè)實(shí)例,顯示目錄中所有子目錄和文件的程序listdir.aspx
目錄下有子目錄和文件兩種形式,必須分別對(duì)待。我們調(diào)用此程序本身對(duì)子目錄進(jìn)行列表顯示,而文件我們需要調(diào)用showfile.aspx程序?qū)ξ募膶傩院蛢?nèi)容進(jìn)行顯示。并且兩者還有不同的刪除方法,所以我們?cè)谶@里設(shè)置了兩個(gè)DataGrid,兩個(gè)DataTable,兩個(gè)DataView,分別處理和顯示目錄和文件。
ASP.NET虛擬主機(jī)在文件目錄管理時(shí)顯示和處理目錄和文件的DataGrid的代碼(代碼在listdir.aspx文件):
顯示目錄或文件的序號(hào)和名稱的數(shù)據(jù)列類似于listdrivers.aspx程序中的相應(yīng)代碼,這里就不再重復(fù)了。對(duì)于子目錄和文件分別有各自的處理頁(yè)面,所以需要導(dǎo)航到兩個(gè)不同的頁(yè)面,對(duì)于子目錄,我們繼續(xù)使用listdir.aspx程序?qū)ζ湎碌淖幽夸浐臀募M(jìn)行列表顯示:
﹤asp:HyperLinkColumn DataNavigateUrlField="DirName" DataNavigateUrlFormatString="listdir.aspx?dir={0}" DataTextField="DirDetail" HeaderText="詳細(xì)信息" Target="_new" /﹥
對(duì)于文件,我們使用showfile.aspx程序顯示其屬性和內(nèi)容:
﹤asp:HyperLinkColumn DataNavigateUrlField="FileName" DataNavigateUrlFormatString="showfile.aspx?file={0}" DataTextField="FileDetail" HeaderText="詳細(xì)信息" Target="_new" /﹥
在兩個(gè)DataGrid(DirGrid,F(xiàn)ileGrid)中我們分別設(shè)置了兩個(gè)HyperLinkColumn列來導(dǎo)航到不同的處理頁(yè)面。
ASP.NET虛擬主機(jī)在文件目錄管理時(shí)在兩個(gè)DataGrid中我們都使用了一個(gè)刪除的按鈕列:
﹤asp:ButtonColumn HeaderText="刪除" Text="刪除" CommandName="Delete" /﹥
由于添加、更新、刪除功能列都是DataGrid的默認(rèn)模板列,所以可以在Vs.net中通過DataGrid的屬性生成器自動(dòng)添加此列。
獲取上一頁(yè)面所傳遞來的參數(shù)的代碼:
因?yàn)樵谙旅娈a(chǎn)生數(shù)據(jù)源的方法中需要使用由上一個(gè)頁(yè)面?zhèn)鬟f過來的參數(shù)來確定目錄和文件的名稱,所以在頁(yè)面的Page_Load方法里使用了下列代碼:
strDir2List = Request.QueryString["dir"];
字符串strDir2List即傳過來的目錄名或文件名。
因?yàn)槲覀兪褂昧藘蓚€(gè)DateGrid,就需要進(jìn)行兩次數(shù)據(jù)綁定,就有兩個(gè)不同的生成數(shù)據(jù)源的方法。
生成目錄數(shù)據(jù)網(wǎng)格(DirGrid)數(shù)據(jù)源的方法:
//通過此方法返回一個(gè)集合形式的數(shù)據(jù)視圖DataView,用來初始化子目錄的DataGrid ICollection CreateDataSourceDir() { dtDir = new DataTable(); DataRow dr; //向DataTable中添加新的數(shù)據(jù)列,共四列 dtDir.Columns.Add(new DataColumn("DirID", typeof(Int32))); dtDir.Columns.Add(new DataColumn("DirName", typeof(string))); dtDir.Columns.Add(new DataColumn("DelDir", typeof(string))); dtDir.Columns.Add(new DataColumn("DirDetail", typeof(string))); //根據(jù)傳入的參數(shù)(目錄名)得到此目錄下所有子目錄名的字符串?dāng)?shù)組 string [] DirEntries = Directory.GetDirectories(strDir2List); //使用foreach循環(huán)可以對(duì)未知長(zhǎng)度的數(shù)組進(jìn)行遍歷循環(huán) foreach(string DirName in DirEntries){ dr = dtDir.NewRow(); dr[0] = i;//序號(hào) dr[1] = DirName;//文件夾名稱 dr[3] = "刪除"; dr[3] = "查看詳情"; dtDir.Rows.Add(dr); i++; } DataView dvDir = new DataView(dtDir); //返回得到的數(shù)據(jù)視圖 return dvDir; }
ASP.NET虛擬主機(jī)在文件目錄管理時(shí)生成文件數(shù)據(jù)網(wǎng)格(FileGrid)數(shù)據(jù)源的方法:
//通過此方法返回一個(gè)集合形式的數(shù)據(jù)視圖DataView,用來初始化文件的DataGrid ICollection CreateDataSourceFile() { dtFile = new DataTable(); DataRow dr; dtFile.Columns.Add(new DataColumn("FileID", typeof(Int32))); dtFile.Columns.Add(new DataColumn("FileName", typeof(string))); dtFile.Columns.Add(new DataColumn("DelFile", typeof(string))); dtFile.Columns.Add(new DataColumn("FileDetail", typeof(string))); //根據(jù)傳入的參數(shù)(目錄名)得到此目錄下所有文件名的字符串?dāng)?shù)組 string [] FileEntries = Directory.GetFiles(strDir2List); foreach(string FileName in FileEntries){ dr = dtFile.NewRow(); dr[0] = i; dr[1] = FileName; dr[2] = "刪除"; dr[3] = "查看詳情"; dtFile.Rows.Add(dr); i++; } dvFile = new DataView(dtFile); return dvFile; }
我們編程實(shí)現(xiàn)了兩個(gè)DataSource只需在頁(yè)面的Page_Load方法里對(duì)兩個(gè)DataGrid進(jìn)行數(shù)據(jù)綁定即可將得到的DataTable中的數(shù)據(jù)顯示在aspx頁(yè)面的DataGrid上。
數(shù)據(jù)綁定代碼:
//對(duì)子目錄數(shù)據(jù)列表DirGrid進(jìn)行數(shù)據(jù)源定義和數(shù)據(jù)綁定 DirGrid.DataSource = CreateDataSourceDir(); DirGrid.DataBind(); //對(duì)文件數(shù)據(jù)列表FileGrid進(jìn)行數(shù)據(jù)源定義和數(shù)據(jù)綁定 FileGrid.DataSource = CreateDataSourceFile(); FileGrid.DataBind();
通過我們上邊介紹的主要方法,我們實(shí)現(xiàn)了對(duì)某個(gè)邏輯驅(qū)動(dòng)器或目錄中的所有子目錄和文件進(jìn)行了列表顯示,并且可以根據(jù)顯示結(jié)果更進(jìn)一步的瀏覽子目錄或者查看文件的屬性和內(nèi)容提要。瀏覽子目錄仍然是通過listdir.aspx這個(gè)程序,沒有任何子目錄級(jí)別要求,沒有目錄深度限制。
關(guān)于如何淺析ASP.NET虛擬主機(jī)在文件目錄管理時(shí)的隱患就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。