自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

網(wǎng)絡(luò)硬盤開發(fā)技巧之ASP.NET+XML

開發(fā) 后端
本文介紹了用asp.net和Xml開發(fā)網(wǎng)絡(luò)硬盤的技術(shù)難點和要點。

文件傳送常用的三種方式FTP、Email及“網(wǎng)上鄰居”都在一定程度上實現(xiàn)了文件數(shù)據(jù)的交流,但它們都主要面向“點對點”的傳送,無法實現(xiàn)“一塊空間,資源互見”的應(yīng)用需求,這種基于“點對多”的共享模式需要尋求另外的傳輸途徑,網(wǎng)絡(luò)硬盤就是一種很好的解決方式。常用傳輸方式及其在特定環(huán)境下面臨的困難我們經(jīng)常有這樣的應(yīng)用需求:通過網(wǎng)絡(luò)交換公共數(shù)據(jù)文件以實現(xiàn)資源共享,同時保護(hù)私有數(shù)據(jù)不被非法訪問,并使用簡單、直觀的方式操作。

英國Ewedrive 提供1GB的免費存儲空間   

英國Ewedrive 提供1GB的免費存儲空間,比較好的是它不限制單個文件大小

我們常用的文件傳輸FTP、Email郵件、網(wǎng)上鄰居都能實現(xiàn)文件的傳送。其中,"Ftp"功能最為強(qiáng)大,但使用起來卻稍顯復(fù)雜,一大堆設(shè)置足以讓許多人望而止步,尤其用戶數(shù)量不可預(yù)見時,針對特殊需求用戶的設(shè)置將更加繁瑣;"Email"是大家所熟悉的了,但它的傳送不僅需要你連入 Internet,而且它的安全性也是個問題,在企業(yè)內(nèi)部,財務(wù)、勞資等文件資料需通過這種方式交流不是好辦法;"網(wǎng)上鄰居"是又一種傳送文件的方法,通過在本機(jī)上指定共享的Web文件夾并放置資源文件,一定范圍內(nèi)的用戶可以訪問到這些文件,然而這種方式使用的范圍相當(dāng)有限,通常在同一個DNS段地址內(nèi)的用戶才能順利訪問,其它尤其是Internet上的用戶,很難使用,此外同Email類似,它的使用也不直觀,很多時候你不得不在許多列表計算機(jī)上一層層展開搜索才有可能獲取你想要的資源!由此看來,以上三種方式雖然在一定程度上實現(xiàn)了文件數(shù)據(jù)的交流,但它們都主要面向"點對點"的傳送(你只能被動地等對方放置數(shù)據(jù)而不能主動"可視化"地索取),無法實現(xiàn)"一塊空間,資源互見"的應(yīng)用需求,這種基于"點對多"的共享方式需要尋求另外的傳輸途徑,網(wǎng)絡(luò)硬盤就是一種很好的解決方式。

onedump   

onedump

OneDump 存儲空間還是無限制大小的,不過單個文件只有***5MB,且同時傳出10個文件,可用于存儲一些文檔之類的東西。

網(wǎng)絡(luò)硬盤的優(yōu)勢網(wǎng)絡(luò)硬盤(也稱共享空間),是服務(wù)器上的一塊硬盤空間,在這里,如果你具備足夠的權(quán)限,你可以對它隨意操作,就象使用你的本地計算機(jī)一樣。要知道,這一切以Http的方式傳輸,以Web的形式展現(xiàn)在所有用戶面前,通過瀏覽器這種熟悉的方式訪問,這樣,"一塊空間,資源互見"的共享模式得以實現(xiàn)!此外,網(wǎng)絡(luò)硬盤界面在客戶端運(yùn)行,它允許用戶提交數(shù)據(jù)到服務(wù)器,然后在指定的范圍內(nèi)管理這些信息,這種處理模式大量使用在實際開發(fā)中,尤其是在構(gòu)建交互式網(wǎng)絡(luò)文檔管理系統(tǒng)方面:網(wǎng)上考試系統(tǒng)、文件傳輸系統(tǒng)、新聞發(fā)布系統(tǒng)以及公司競標(biāo)系統(tǒng)等方面都有大量應(yīng)用! 以下使用asp.net(Visual C#語言實現(xiàn))和Xml(可擴(kuò)展標(biāo)記語言)開發(fā)了這樣的網(wǎng)絡(luò)硬盤系統(tǒng)。關(guān)于程序的開發(fā)細(xì)節(jié)及代碼中使用的關(guān)鍵技術(shù)和難點,都有詳細(xì)的講解,參照這些說明,你完全可以開發(fā)出自己的網(wǎng)絡(luò)硬盤。

網(wǎng)絡(luò)硬盤開發(fā):網(wǎng)絡(luò)硬盤實現(xiàn)的功能

我們的網(wǎng)絡(luò)硬盤實現(xiàn)了以下功能:

1、查看文件夾內(nèi)容

2、創(chuàng)建新文件夾同時可設(shè)置訪問權(quán)限

3、文件夾間的跳轉(zhuǎn):進(jìn)入下一級,返回上一級

4、上傳文件到指定文件夾

5、下載文件到本機(jī)或在線查看文件內(nèi)容

6、刪除文件或文件夾

網(wǎng)絡(luò)硬盤開發(fā)細(xì)節(jié)及技術(shù)關(guān)鍵點

1、查看文件夾內(nèi)容

程序一開始將進(jìn)入指定的根文件夾(如\NetHard),這個文件夾下的內(nèi)容將通過數(shù)據(jù)綁定控件(DataGrid)來列表顯示,包括以下方面:類別(區(qū)別文件夾或文件)、名稱、權(quán)限(是否允許進(jìn)入文件夾?是否可以下載文件?)、刪除(是否允許刪除文件或文件夾?)以及針對文件夾的創(chuàng)建者。這里,由于文件夾中內(nèi)容動態(tài)變化(你不知道什么時候就有用戶傳送了文件或新建了文件夾或刪除了它們),我們通過動態(tài)創(chuàng)建數(shù)據(jù)表DataTable來讀取指定文件夾下的內(nèi)容, 然后作為數(shù)據(jù)源與顯示控件DataGrid綁定,這樣,數(shù)據(jù)的顯示就總是適時的。創(chuàng)建動態(tài)表的函數(shù)如下: public DataTable Bind(string fullFolderPath)//創(chuàng)建數(shù)據(jù)表讀取文件夾內(nèi)容

  1. {   
  2.   //以下是動態(tài)創(chuàng)建數(shù)據(jù)表的方法   
  3.   DataTable dt=new DataTable();   
  4.   DataRow dr;   
  5.   //首先創(chuàng)建數(shù)據(jù)表結(jié)構(gòu)   
  6.   dt.Columns.Add(new DataColumn("type",System.Type.GetType("System.String"))); //類型   
  7.   dt.Columns.Add(new DataColumn("name",System.Type.GetType("System.String"))); //名稱   
  8.   dt.Columns.Add(new DataColumn("action",System.Type.GetType("System.String"))); //操作   
  9.   dt.Columns.Add(new DataColumn("owner",System.Type.GetType("System.String"))); //創(chuàng)建人   
  10.   //為每一行填充數(shù)據(jù)   
  11.   foreach(string d in Directory.GetFileSystemEntries(fullFolderPath)){   
  12.   dr=dt.NewRow(); //建新行   
  13.   string[] parts=d.Split(new char[]{'\\'});   
  14.   string txt=parts[parts.Length-1]; //取***一部分的字符串,它將可能是文件名或文件夾   
  15.   dr[1]=txt; //名稱name   
  16.   if(File.Exists(d))//如果是文件   
  17.   {   
  18.   dr[0]="文件"//類型type   
  19.   int pos=currFullPath.IndexOf("NetHard");   
  20.   string relaUrl=currFullPath.Substring(pos);   
  21.   string   
  22.   url="http://10.80.50.1/SharedSpace/"+relaUrl+"/"+txt; //   
  23.   10.80.50.1為作者服務(wù)器地址,你應(yīng)該將它修改為你所在服務(wù)器地址   
  24.   dr[2]="下載";   
  25.   }   
  26.   else if(Directory.Exists(d)){//如果是文件夾   
  27.   dr[0]="文件夾"//type類型   
  28.   string password=GetFolderPassword(d); //取得文件夾密碼信息   
  29.   int type=GetFolderLimitType(d);   
  30.   if((password!="no")&&(type!=1))   
  31.   dr[2]="href=PasswordValidate.aspx?path="+d+">密封"//操作action   
  32.   else   
  33.   dr[2]="進(jìn)入"//操作action   
  34.   dr[3]=GetFolderOwner(d); //取文件夾創(chuàng)建者名   
  35.   }   
  36.   else   
  37.   Response.Write("");   
  38.   dt.Rows.Add(dr); //添加行   
  39.   return dt; //返回數(shù)據(jù)表   
  40.   }   

2、創(chuàng)建文件夾及設(shè)置訪問權(quán)限 

在當(dāng)前路徑下輸入新文件夾名稱來創(chuàng)建新文件夾,通過調(diào)用.net的IO名字空間中的類庫 Directory方法來實現(xiàn)該操作:Directory.CreateDirectory(string directory),字符串directory表示新建文件夾的完整路徑,該方法默認(rèn)向所有用戶開放新文件夾的完全讀寫訪問權(quán)限。對于網(wǎng)絡(luò)硬盤共享根文 件夾可手動進(jìn)行創(chuàng)建,并設(shè)置寫入權(quán)限,通過執(zhí)行"internet信息服務(wù)"的"權(quán)限向?qū)?來設(shè)置訪問權(quán)限,可以設(shè)置密碼來指定是否允許用戶進(jìn)入該文件夾 以及是否允許用戶刪除該文件夾。此外,為了管理這些文件夾,需要保留相關(guān)設(shè)置信息:如文件夾名、位置、受限操作類型、密碼及創(chuàng)建者等。將這些信息寫入 XML文件,隨后通過讀寫該XML文件來實現(xiàn)對文件夾的相關(guān)操作。 

  1. Public void CreateXmlOrAddFrag (string xmlFullPath, string folderFullPath, string owner, string password, int type){   
  2.  XmlDocument xmlDoc=new XmlDocument();   
  3.  string xml="";   
  4.  String xmlNode="<character>";   
  5.  XmlNode+="<full Path>";   
  6.  XmlNode+=folderFullPath;   
  7.  XmlNode+="</full Path>";   
  8.  XmlNode+="<o(jì)wner>";   
  9.  XmlNode+=owner;   
  10.  XmlNode+="</owner>";   
  11.  xmlNode+="<password>";   
  12.  xmlNode+=password;   
  13.  xmlNode+="</password>";   
  14.  xmlNode+="<type>";   
  15.  xmlNode+=type;   
  16.  xmlNode+="</type>";   
  17.  xmlNode+="</character>";   
  18.  if(!File.Exists(xmlFullPath)){//若不存在則創(chuàng)建xml存儲文件   
  19.   xml="<?xml version=’1.0’ encoding=’gb2312’?>";   
  20.   xml+="<folder>";   
  21.   xml+=xmlNode;   
  22.   xml+="</folder>";   
  23.   xmlDoc.LoadXml(xml);   
  24.   xmlDoc.Save(xmlFullPath);//存儲文件   
  25.  }   
  26.  else{//存在xml存儲文件則添加新的文檔片段   
  27.   xmlDoc.Load(xmlFullPath);   
  28.   XmlDocumentFragment docFrag=xmlDoc.CreateDocumentFragment();//文檔片元素節(jié)點   
  29.   docFrag.InnerXml=xmlNode;   
  30.   XmlNode currNode=xmlDoc.DocumentElement;//獲取文檔根節(jié)點   
  31.   currNode.InsertBefore(docFrag,currNode.FirstChild);//插入文檔片段   
  32.   xmlDoc.Save(xmlFullPath);//存儲改變內(nèi)容   
  33.  }   
  34. }   

其中,參數(shù)fileFullPath是存儲文件夾信息的XML文件路徑,folderFullPath是此新文件夾路徑,owner是創(chuàng)建者名, password是密碼,type表示限制操作的類型("0"表示進(jìn)入受限,"1"表示刪除受限)。程序首先判斷存儲文件夾信息的文件是否存在,不存在則 動態(tài)創(chuàng)建文件,之后新建文件夾時,只需添加文檔片段即可。這里,對XML文件的讀寫通過文檔對象模型DOM實現(xiàn),由于此處XML文件不會很大,因此對內(nèi)存 資源要求不會太高,速度會很快。 

3、對文件及文件夾的操作 

對文件的操作包括"下載"和"刪除"兩種,用下面的語句實現(xiàn)下載功能: 

  1. dr[2]="<a href="+url+" target=_blank"+">下載</a>";//建立聯(lián)接地址  

其中,url是指定文件對應(yīng)的服務(wù)器路徑。通過這樣的鏈接將文件定位到服務(wù)器上的對應(yīng)位置,客戶端可以下載文件到本機(jī)上,也可在服務(wù)器上打開它。 

刪除文件則利用.NET的IO命名空間的File類庫中的方法實現(xiàn):File. Delete(string filename);其中,filename為文件的完整路徑。 

如果文件夾在創(chuàng)建時被設(shè)置為"進(jìn)入受限"或者"刪除受限",用戶在執(zhí)行這樣的操作時將被要求密碼驗證,只有通過驗證才能完成相應(yīng)的操作。. NET的Directory類庫提供的方法Delete()只能刪除空文件夾,因此需要先清空文件夾中的內(nèi)容,然后才能完成此操作。由于文件夾中可能還包 含有文件夾,這里通過遞歸調(diào)用實現(xiàn)該操作: 

  1. Public void Delete Folder (string dir)   
  2. {   
  3.  For each (string d in Directory.GetFileSystemEntries (dir))   
  4.  {   
  5.   If (File. Exists (d))   
  6.    File. Delete(d);//直接刪除其中的文件   
  7.   Else   
  8.    Delete Folder(d);//遞歸刪除子文件夾   
  9.  }   
  10.  Directory. Delete(dir);//刪除已空文件夾   
  11. }   

其中,參數(shù)dir是待刪除文件夾的完整路徑。程序使用循環(huán)語句,查找文件夾中的內(nèi)容,若是文件則直接刪除,若是文件夾,則遞歸調(diào)用方法自身來刪除子文件夾,文件夾清空后再完成刪除操作。 

4、文件上傳 

.NET提供的類庫HttpPostedFile和HttpFilesCollection可以訪問上傳到服務(wù)器的文件,并且可以控制文件上傳過程。 HttpPostedFile類封裝已上傳到服務(wù)器的文件對象,其方法和屬性提供對每個文件內(nèi)容和屬性的訪問;HttpFilesCollection類 為多個HttpPostedFile對象提供一個容器,保存上傳給服務(wù)器的數(shù)據(jù)結(jié)構(gòu)的類,利用被傳送的文件集合的Files屬性從HttpRequest 對象加以訪問。 

1)客戶端表單的編碼類型Enctype 設(shè)置為multipart/form-data的MIME格式,提交表單使用HTTP的post方法: 

  1. <Form id="form1" method="post" enctype="multipart/form-data/form-data" runat="server" >  

2)HttpInputFile控件運(yùn)行在服務(wù)器端,設(shè)置方法如下: 

  1. <INPUT id="file Up" type="file" size="6" runat="server">  

3)如果要上傳多個文件,可設(shè)置多個HttpInputFile控件,然后利用HttpRequest.Files來分別獲取這些文件。 

5、跟蹤"當(dāng)前路徑"值 

由于需要在不同的文件夾之間跳轉(zhuǎn),而所有文件夾的內(nèi)容都通過同一個頁面Default.ASPx來顯示,當(dāng)傳送查詢字符串調(diào)用它時,可以設(shè)置一個靜態(tài) 變量實現(xiàn)路徑的完整表示:public static string currFullPath=""。當(dāng)前路徑發(fā)生改變時,將路徑值傳送給這個靜態(tài)變量,該變量始終存儲當(dāng)前路徑值,用它作為查詢字符串調(diào)用顯示頁:currFullPath=Request["path"]。因此,利用Response. Redirect ("Default.aspx? path="+currFullPath) 語句總能顯示當(dāng)前文件夾下的內(nèi)容。 

6、環(huán)境配置文件Web.config的處理 

在中文狀態(tài)下,需要將全球化設(shè)置編碼由默認(rèn)的"Utf-8"改為"gb2312": 

  1.    <Globalization   
  2. Request Encoding="gb2312"   
  3. Response Encoding="gb2312"   
  4. />   

同時,考慮到Web.config默認(rèn)設(shè)置的文件大小可能不能滿足實際需要,通過修改參數(shù)maxRequestLength的值,可將其尺度適當(dāng)放大一些: 

  1. <HttpRuntime maxRequestLength="500000">   
  2. </httpRuntime>  

結(jié)束語 

asp.net技術(shù)與XML技術(shù)是當(dāng)前網(wǎng)絡(luò)開發(fā)應(yīng)用的熱點,在數(shù)據(jù)傳輸、信息發(fā)布、電子支付及網(wǎng)絡(luò)安全等諸多領(lǐng)域被廣泛應(yīng)用。這里將相關(guān)技術(shù)結(jié)合起來用于網(wǎng)絡(luò)硬盤開發(fā),實現(xiàn)系統(tǒng)資源共享,不僅可以滿足用戶的基本需求、操作簡便,而且可有效保護(hù)用戶私有數(shù)據(jù)不被非法訪問,具有一定安全性,便于維護(hù),因此在文 件傳輸系統(tǒng)、網(wǎng)上考試系統(tǒng)以及新聞發(fā)布系統(tǒng)等實際應(yīng)用中,均可廣泛采用這種處理模式。

【編輯推薦】

  1. ASP.NET中的session存儲模式運(yùn)用
  2. ASP.NET中的文件上傳下載方法集合
  3. ASP.NET中的cookie讀寫方法介紹
  4. ASP.NET中的javascript操作
  5. ASP.NET2.0中的單點登錄簡介及實現(xiàn)

     

責(zé)任編輯:book05 來源: IT專家網(wǎng)
相關(guān)推薦

2009-08-05 10:17:55

ASP.NET TheASP.NET開發(fā)技巧

2009-08-05 18:46:21

ComboBox顯示ASP.NET控件開發(fā)

2009-08-05 17:58:24

UpdatePanel

2009-08-05 18:32:28

HtmlTextWriASP.NET控件開發(fā)

2009-07-27 14:46:16

XML和ASP.NET

2009-07-29 13:12:36

StringBuildASP.NET技巧

2009-07-29 10:52:09

數(shù)據(jù)采集程序ASP.NET技巧

2009-07-24 12:14:17

asp.net技巧

2009-07-28 14:40:15

XML數(shù)據(jù)ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-01-03 09:34:30

ASP.NET.NET性能優(yōu)化

2009-08-05 18:17:16

ASP.NET控件開發(fā)基類

2009-07-28 16:29:06

XML Web服務(wù)ASP.NET構(gòu)造

2009-07-28 17:34:28

ASP.NET XML

2012-09-25 09:31:58

ASP.NETC#Web

2009-07-23 15:18:30

創(chuàng)建XML Web服務(wù)ASP.NET

2009-07-23 14:08:58

2009-08-06 15:21:45

ASP.NET控件開發(fā)RenderConte

2011-07-27 09:33:14

iPhone 網(wǎng)絡(luò) Web

2009-07-29 13:32:06

ASP.NET控件使用
點贊
收藏

51CTO技術(shù)棧公眾號