程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 基於ASP.NET與XML的網絡硬盤開發

基於ASP.NET與XML的網絡硬盤開發

編輯:關於ASP.NET

引言

在傳輸文件時常常采用FTP、Email以及"網上鄰居"三種方式,這幾種方式各有優缺點。FTP功能強大,但使用起來較為復雜,需要進行詳細設置滿足各種不同需求,當用戶數量不可預見時,設置會很繁瑣。Email使用方便,連入Internet就可進行文件傳輸,但安全性不高,對於比較重要的文件一般不采用此方式。"網上鄰居"通過在本機上指定共享的Web文件夾並放置資源文件,用戶在一定范圍內可以訪問這些文件,但是范圍相當有限,通常在同一個DNS段地址內的用戶才能順利訪問,並且在許多列表計算機上層層展開搜索來獲取資源也比較費時。以上幾種方式主要是"點對點"進行傳輸,對於"點對多"的共享模式則需要尋求另外的傳輸途徑,網絡硬盤便是一種較好的解決方式。只要用戶具備足夠權限,就可進行各種操作,如同使用本地計算機一樣。它以HTTP方式傳輸,以WEB形式展現在所有用戶面前,通過浏覽器方式進行訪問,這樣,"一塊空間,資源互見"的共享模式得以實現。

網絡硬盤開發

ASP.NET是一種全新的服務器端技術,它采用CLR(Common Language Runtime)結構的程序設計平台,可在服務器端生成功能強大的WEB應用程序,同時也可保留用戶完整的應用狀態,提供最佳的控制方式[1]。XML是數據訪問領域的新技術,具有自描述性、內容與顯示相分離、可擴展性、獨立於平台等特點[2],提供了一套跨平台、跨網絡、跨程序語言的數據描述方式,己逐漸成為科學與業務應用中數據表示及應用的數據交換標准格式[3]。將這兩種技術結合起來,可開發出功能強大的網絡硬盤系統,例如可以查看文件夾內容,創建新文件夾以及設置訪問權限,對文件及文件夾進行相關操作,上傳文件到指定文件夾,下載文件到本機或在線查看文件內容等等。下面分別用C#語言實現相應功能。

1、查看文件夾內容

進入到指定的根文件夾,通過數據綁定控件Data Grid列表顯示該文件夾內容,包括類別、名稱、權限等。由於通過動態創建數據表Data Table讀取指定文件夾內容,並作為數據源與顯示控件Data Grid綁定,因此數據的顯示是動態的。創建動態表的函數如下:

public Data Table Bind(string fullFolderPath)//創建數據表讀取文件夾內容
{
  Data Table DT=new Data Table ();
  Data Row dr;
  //首先創建數據表結構
  Dt.Columns.Add (new DataColumn ("type", System.Type.GetType ("System. String")));//類型
  Dt.Columns.Add (new Data Column ("name", System.Type.GetType ("System. String")));//名稱
  Dt.Columns.Add (new Data Column ("action", System.Type.GetType ("System. String")));//操作
  Dt.Columns.Add (new Data Column ("owner", System.Type.GetType ("System. String")));//創建者
  //為每一行填充數據
  For each (string d in Directory.GetFileSystemEntries (fullFolderPath)){
dr=dt.NewRow();//新建行
String [] parts=d. Split (new char []{’\\’});
String txt=parts [parts. Length-1];
dr[1]=txt;//名稱name
if(File.Exists(d))//如果是文件
{
  dr[0]="文件";//類型type
  Int pos=currFullPath. IndexOf ("Net Hard");
  String relaUrl=currFullPath. Substring (pos);
  string url="http://202.115.64.13/SharedSpace/"+relaUrl+"/"+txt;//202.115.64.13為服務器地址
  dr[2]="<a href="+url+" target=_blank"+">下載</a>";
}
Else if (Directory. Exists(d)){//如果是文件夾
  dr[0]="文件夾";//type類型
  string password=GetFolderPassword(d);//取得文件夾密碼信息
  Int type=GetFolderLimitType (d);
  If ((password! ="no")&&(type! =1))
Dr [2]="<a href=PasswordValidate.aspx? path="+d+">密封</a>";//操作action
  Else
Dr [2]="<a href=Default.aspx? path="+d+">進入</a>";//操作action
dr[3]=GetFolderOwner(d);//取文件夾創建者名
}
Else
  Response.Write("<script>alert(’無對象可綁定!’)</script>");
  dt.Rows.Add(dr);//添加行
  return dt;//返回數據表
  }
}

此方法取出指定文件夾下的內容分別處理:如果是文件,則顯示"下載"鏈接指向服務器文件的Url地址;對於文件夾,若是"進入受限"則顯示"密封"導入到密碼驗證頁,否則顯示"進入"鏈接到初始頁。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved