溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何淺析ASP.NET虛擬主機(jī)在文件目錄管理時的隱患

發(fā)布時間:2021-10-28 10:51:25 來源:億速云 閱讀:156 作者:柒染 欄目:編程語言

這篇文章給大家介紹如何淺析ASP.NET虛擬主機(jī)在文件目錄管理時的隱患,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

ASP.NET虛擬主機(jī)在文件目錄管理時的隱患是什么么?首先讓我們看一個實例,顯示目錄中所有子目錄和文件的程序listdir.aspx

目錄下有子目錄和文件兩種形式,必須分別對待。我們調(diào)用此程序本身對子目錄進(jìn)行列表顯示,而文件我們需要調(diào)用showfile.aspx程序?qū)ξ募膶傩院蛢?nèi)容進(jìn)行顯示。并且兩者還有不同的刪除方法,所以我們在這里設(shè)置了兩個DataGrid,兩個DataTable,兩個DataView,分別處理和顯示目錄和文件。

ASP.NET虛擬主機(jī)在文件目錄管理時顯示和處理目錄和文件的DataGrid的代碼(代碼在listdir.aspx文件):

顯示目錄或文件的序號和名稱的數(shù)據(jù)列類似于listdrivers.aspx程序中的相應(yīng)代碼,這里就不再重復(fù)了。對于子目錄和文件分別有各自的處理頁面,所以需要導(dǎo)航到兩個不同的頁面,對于子目錄,我們繼續(xù)使用listdir.aspx程序?qū)ζ湎碌淖幽夸浐臀募M(jìn)行列表顯示:

﹤asp:HyperLinkColumn DataNavigateUrlField="DirName" DataNavigateUrlFormatString="listdir.aspx?dir={0}" DataTextField="DirDetail"   HeaderText="詳細(xì)信息" Target="_new" /﹥

對于文件,我們使用showfile.aspx程序顯示其屬性和內(nèi)容:

﹤asp:HyperLinkColumn DataNavigateUrlField="FileName" DataNavigateUrlFormatString="showfile.aspx?file={0}"   DataTextField="FileDetail"   HeaderText="詳細(xì)信息"   Target="_new"   /﹥

在兩個DataGrid(DirGrid,F(xiàn)ileGrid)中我們分別設(shè)置了兩個HyperLinkColumn列來導(dǎo)航到不同的處理頁面。

ASP.NET虛擬主機(jī)在文件目錄管理時在兩個DataGrid中我們都使用了一個刪除的按鈕列:

﹤asp:ButtonColumn HeaderText="刪除"   Text="刪除"   CommandName="Delete" /﹥

由于添加、更新、刪除功能列都是DataGrid的默認(rèn)模板列,所以可以在Vs.net中通過DataGrid的屬性生成器自動添加此列。

獲取上一頁面所傳遞來的參數(shù)的代碼:

因為在下面產(chǎn)生數(shù)據(jù)源的方法中需要使用由上一個頁面?zhèn)鬟f過來的參數(shù)來確定目錄和文件的名稱,所以在頁面的Page_Load方法里使用了下列代碼:

strDir2List = Request.QueryString["dir"];

字符串strDir2List即傳過來的目錄名或文件名。

因為我們使用了兩個DateGrid,就需要進(jìn)行兩次數(shù)據(jù)綁定,就有兩個不同的生成數(shù)據(jù)源的方法。

生成目錄數(shù)據(jù)網(wǎng)格(DirGrid)數(shù)據(jù)源的方法:

//通過此方法返回一個集合形式的數(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)可以對未知長度的數(shù)組進(jìn)行遍歷循環(huán)  foreach(string DirName in DirEntries){  dr = dtDir.NewRow();  dr[0] = i;//序號  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ù)據(jù)網(wǎng)格(FileGrid)數(shù)據(jù)源的方法:

//通過此方法返回一個集合形式的數(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;  }

我們編程實現(xiàn)了兩個DataSource只需在頁面的Page_Load方法里對兩個DataGrid進(jìn)行數(shù)據(jù)綁定即可將得到的DataTable中的數(shù)據(jù)顯示在aspx頁面的DataGrid上。

數(shù)據(jù)綁定代碼:

//對子目錄數(shù)據(jù)列表DirGrid進(jìn)行數(shù)據(jù)源定義和數(shù)據(jù)綁定  DirGrid.DataSource = CreateDataSourceDir();  DirGrid.DataBind();   //對文件數(shù)據(jù)列表FileGrid進(jìn)行數(shù)據(jù)源定義和數(shù)據(jù)綁定  FileGrid.DataSource = CreateDataSourceFile();  FileGrid.DataBind();

通過我們上邊介紹的主要方法,我們實現(xiàn)了對某個邏輯驅(qū)動器或目錄中的所有子目錄和文件進(jìn)行了列表顯示,并且可以根據(jù)顯示結(jié)果更進(jìn)一步的瀏覽子目錄或者查看文件的屬性和內(nèi)容提要。瀏覽子目錄仍然是通過listdir.aspx這個程序,沒有任何子目錄級別要求,沒有目錄深度限制。

關(guān)于如何淺析ASP.NET虛擬主機(jī)在文件目錄管理時的隱患就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI