天天看點

一起談.NET技術,網絡硬碟開發技巧之ASP.NET+XML

  檔案傳送常用的三種方式FTP、Email及“網路上的芳鄰”都在一定程度上實作了檔案資料的交流,但它們都主要面向“點對點”的傳送,無法實作“一塊空間,資源互見”的應用需求,這種基于“點對多”的共享模式需要尋求另外的傳輸途徑,網絡硬碟就是一種很好的解決方式。常用傳輸方式及其在特定環境下面臨的困難我們經常有這樣的應用需求:通過網絡交換公共資料檔案以實作資源共享,同時保護私有資料不被非法通路,并使用簡單、直覺的方式操作。

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

  我們常用的檔案傳輸FTP、Email郵件、網路上的芳鄰都能實作檔案的傳送。其中,"Ftp"功能最為強大,但使用起來卻稍顯複雜,一大堆設定足以讓許多人望而止步,尤其使用者數量不可預見時,針對特殊需求使用者的設定将更加繁瑣;"Email"是大家所熟悉的了,但它的傳送不僅需要你連入Internet,而且它的安全性也是個問題,在企業内部,财務、勞資等檔案資料需通過這種方式交流不是好辦法;"網路上的芳鄰"是又一種傳送檔案的方法,通過在本機上指定共享的Web檔案夾并放置資源檔案,一定範圍内的使用者可以通路到這些檔案,然而這種方式使用的範圍相當有限,通常在同一個DNS段位址内的使用者才能順利通路,其它尤其是Internet上的使用者,很難使用,此外同Email類似,它的使用也不直覺,很多時候你不得不在許多清單計算機上一層層展開搜尋才有可能擷取你想要的資源!由此看來,以上三種方式雖然在一定程度上實作了檔案資料的交流,但它們都主要面向"點對點"的傳送(你隻能被動地等對方放置資料而不能主動"可視化"地索取),無法實作"一塊空間,資源互見"的應用需求,這種基于"點對多"的共享方式需要尋求另外的傳輸途徑,網絡硬碟就是一種很好的解決方式。

  onedump

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

  網絡硬碟的優勢網絡硬碟(也稱共享空間),是伺服器上的一塊硬碟空間,在這裡,如果你具備足夠的權限,你可以對它随意操作,就象使用你的本地計算機一樣。要知道,這一切以Http的方式傳輸,以Web的形式展現在所有使用者面前,通過浏覽器這種熟悉的方式通路,這樣,"一塊空間,資源互見"的共享模式得以實作!此外,網絡硬碟界面在用戶端運作,它允許使用者送出資料到伺服器,然後在指定的範圍内管理這些資訊,這種處理模式大量使用在實際開發中,尤其是在建構互動式網絡文檔管理系統方面:網上考試系統、檔案傳輸系統、新聞釋出系統以及公司競标系統等方面都有大量應用!以下使用asp.net(VisualC#語言實作)和Xml(可擴充标記語言)開發了這樣的網絡硬碟系統。關于程式的開發細節及代碼中使用的關鍵技術和難點,都有詳細的講解,參照這些說明,你完全可以開發出自己的網絡硬碟。

  網絡硬碟開發:網絡硬碟實作的功能

  我們的網絡硬碟實作了以下功能:

  1、檢視檔案夾内容

  2、建立新檔案夾同時可設定通路權限

  3、檔案夾間的跳轉:進入下一級,傳回上一級

  4、上傳檔案到指定檔案夾

  5、下載下傳檔案到本機或線上檢視檔案内容

  6、删除檔案或檔案夾

  網絡硬碟開發細節及技術關鍵點

  程式一開始将進入指定的根檔案夾(如\NetHard),這個檔案夾下的内容将通過資料綁定控件(DataGrid)來清單顯示,包括以下方面:類别(差別檔案夾或檔案)、名稱、權限(是否允許進入檔案夾?是否可以下載下傳檔案?)、删除(是否允許删除檔案或檔案夾?)以及針對檔案夾的建立者。這裡,由于檔案夾中内容動态變化(你不知道什麼時候就有使用者傳送了檔案或建立了檔案夾或删除了它們),我們通過動态建立資料表DataTable來讀取指定檔案夾下的内容,然後作為資料源與顯示控件DataGrid綁定,這樣,資料的顯示就總是适時的。建立動态表的函數如下:     

  2、建立檔案夾及設定通路權限

  在目前路徑下輸入新檔案夾名稱來建立新檔案夾,通過調用.net的IO名字空間中的類庫Directory方法來實作該操作:Directory.CreateDirectory(stringdirectory),字元串directory表示建立檔案夾的完整路徑,該方法預設向所有使用者開放新檔案夾的完全讀寫通路權限。對于網絡硬碟共享根檔案夾可手動進行建立,并設定寫入權限,通過執行"internet資訊服務"的"權限向導"來設定通路權限,可以設定密碼來指定是否允許使用者進入該檔案夾以及是否允許使用者删除該檔案夾。此外,為了管理這些檔案夾,需要保留相關設定資訊:如檔案夾名、位置、受限操作類型、密碼及建立者等。将這些資訊寫入XML檔案,随後通過讀寫該XML檔案來實作對檔案夾的相關操作。  

  其中,參數fileFullPath是存儲檔案夾資訊的XML檔案路徑,folderFullPath是此新檔案夾路徑,owner是建立者名,password是密碼,type表示限制操作的類型("0"表示進入受限,"1"表示删除受限)。程式首先判斷存儲檔案夾資訊的檔案是否存在,不存在則動态建立檔案,之後建立檔案夾時,隻需添加文檔片段即可。這裡,對XML檔案的讀寫通過文檔對象模型DOM實作,由于此處XML檔案不會很大,是以對記憶體資源要求不會太高,速度會很快。

  3、對檔案及檔案夾的操作

  對檔案的操作包括"下載下傳"和"删除"兩種,用下面的語句實作下載下傳功能:

  dr[2]="<ahref="+url+"target=_blank"+">下載下傳</a>";//建立聯接位址其中,url是指定檔案對應的伺服器路徑。通過這樣的連結将檔案定位到伺服器上的對應位置,用戶端可以下載下傳檔案到本機上,也可在伺服器上打開它。

  删除檔案則利用.NET的IO命名空間的File類庫中的方法實作:File.Delete(stringfilename);其中,filename為檔案的完整路徑。

  如果檔案夾在建立時被設定為"進入受限"或者"删除受限",使用者在執行這樣的操作時将被要求密碼驗證,隻有通過驗證才能完成相應的操作。.NET的Directory類庫提供的方法Delete()隻能删除空檔案夾,是以需要先清空檔案夾中的内容,然後才能完成此操作。由于檔案夾中可能還包含有檔案夾,這裡通過遞歸調用實作該操作:  

  其中,參數dir是待删除檔案夾的完整路徑。程式使用循環語句,查找檔案夾中的内容,若是檔案則直接删除,若是檔案夾,則遞歸調用方法自身來删除子檔案夾,檔案夾清空後再完成删除操作。

  4、檔案上傳

  .NET提供的類庫HttpPostedFile和HttpFilesCollection可以通路上傳到伺服器的檔案,并且可以控制檔案上傳過程。HttpPostedFile類封裝已上傳到伺服器的檔案對象,其方法和屬性提供對每個檔案内容和屬性的通路;HttpFilesCollection類為多個HttpPostedFile對象提供一個容器,儲存上傳給伺服器的資料結構的類,利用被傳送的檔案集合的Files屬性從HttpRequest對象加以通路。

    1)用戶端表單的編碼類型Enctype設定為multipart/form-data的MIME格式,送出表單使用HTTP的post方法:  

       2)HttpInputFile控件運作在伺服器端,設定方法如下:  

          3)如果要上傳多個檔案,可設定多個HttpInputFile控件,然後利用HttpRequest.Files來分别擷取這些檔案。

    5、跟蹤"目前路徑"值

  由于需要在不同的檔案夾之間跳轉,而所有檔案夾的内容都通過同一個頁面Default.ASPx來顯示,當傳送查詢字元串調用它時,可以設定一個靜态變量實作路徑的完整表示:publicstaticstringcurrFullPath=""。目前路徑發生改變時,将路徑值傳送給這個靜态變量,該變量始終存儲目前路徑值,用它作為查詢字元串調用顯示頁:currFullPath=Request["path"]。是以,利用Response.Redirect("Default.aspx?path="+currFullPath)語句總能顯示目前檔案夾下的内容。

  6、環境配置檔案Web.config的處理

  在中文狀态下,需要将全球化設定編碼由預設的"Utf-8"改為"gb2312":  

同時,考慮到Web.config預設設定的檔案大小可能不能滿足實際需要,通過修改參數maxRequestLength的值,可将其尺度适當放大一些:  

     結束語

  asp.net技術與XML技術是目前網絡開發應用的熱點,在資料傳輸、資訊釋出、電子支付及網絡安全等諸多領域被廣泛應用。這裡将相關技術結合起來用于網絡硬碟開發,實作系統資源共享,不僅可以滿足使用者的基本需求、操作簡便,而且可有效保護使用者私有資料不被非法通路,具有一定安全性,便于維護,是以在檔案傳輸系統、網上考試系統以及新聞釋出系統等實際應用中,均可廣泛采用這種處理模式。