摘 要:介紹了幾種常見的利用網絡備份文件的方法, 比較了各自的優缺點,提出了使用ASP.NET編程,打造自己的網絡硬盤的方法。網絡硬盤采用“點對多”的共享方式,使用HTTP方式傳輸,操作簡便,具有廣泛的應用性。
關鍵詞:網絡文件備份;網絡硬盤;ASP.NET
隨著Internet的飛速發展, 基于WEB的應用系統層出不窮。在日常生活和辦公環境中, 我們經常需要通過網絡存放文件或者共享數據, 常見的FTP、 E-Mail、網上鄰居、MSN/QQ 等都能實現文件的傳送, 但是各有優缺點。其中,“FTP”功能最為強大,但使用起來比較麻煩,通常需要安裝專用客戶端軟件,適合大批量集中傳輸文件的情況?!癊-Mail”的傳送比較方便,易使用,但是,通過電子郵件進行備份有個致命的弱點,就是不穩定,此外還要受到郵箱容量的限制?!熬W上鄰居”是又一種傳送文件的方法,通過在本機上指定共享的Web文件夾并放置資源文件,一定范圍內的用戶可以訪問到這些文件,然而這種方式使用的范圍相當有限,通常在同一個DNS段地址內的用戶才能順利訪問,其它尤其是Internet上的用戶,很難使用。MSN/QQ 使用方便、實時傳遞信息,但需要雙方同時在線,也不宜傳輸大容量數據。以上幾種方法都主要面向“點對點”的傳送,只能被動地等對方放置數據而不能主動“可視化”地索取。后來網上就有了免費的個人主頁空間。但是對于免費主頁的供應商來說,他們并不希望用戶把他們的空間當作網絡硬盤來使用, 畢竟每提供一塊空間,供應商就必須付出一筆費。因此我們也經常能在免費主頁空間的注冊條款上看到“禁止存放與網頁無關的文件”等限制條件,有時你辛苦上傳的壓縮包還會被網絡管理員無情地刪除。而且,在免費主頁空間中你很難對某個特定文件夾是否共享做出設置。于是為了共享,則經常出現兩種情況:要么整個空間全盤開放,要么你 自己去把共享文件的地址 (URL)親自發給需要它的朋友。而網絡硬盤的出現解決了以上的問題。網絡硬盤綜合了以上各種工具的諸多優點,不僅是一種功能強大、操作便捷、大容量、異步存儲的工具,更具有基于“點對多”的共享方式。
此外,網絡硬盤界面在客戶端運行,它允許用戶提交數據到服務器,然后在指定的范圍內管理這些信息,這種處理模式大量使用在實際開發中,尤其是在構建交互式網絡文檔管理系統方面:網上考試系統、文件傳輸系統、新聞發布系統以及公司競標系統等方面都有大量應用。 以下就簡單介紹如何使用Asp.net和Xml開發一個這樣的網絡硬盤系統。
1 查看文件夾內容:
程序一開始將進入指定的根文件夾(如\\NetHard),這個文件夾下的內容將通過數據綁定控件(DataGrid)來列表顯示,包括以下方面:類別(區別文件夾或文件)、名稱、權限(是否允許進入文件夾?是否可以下載文件?)、刪除(是否允許刪除文件或文件夾?)以及針對文件夾的創建者。這里,由于文件夾中內容動態變化(你不知道什么時候就有用戶傳送了文件或新建了文件夾或刪除了它們),我們通過動態創建數據表DataTable來讀取指定文件夾下的內容, 然后作為數據源與顯示控件DataGrid綁定,這樣,數據的顯示就總是適時的。
2 文件上傳:
要實現網絡硬盤的功能,必須要有可供操作的文件,這些文件來自于客戶端的上傳?,F在.Net提供的類庫HttpPostedFile和HttpFilesCollection可以很容易地訪問上載到服務器的文件。其中的HttpPostedFile類封裝已經上傳到服務器的文件對象,其方法和屬性提供對每個文件的內容和屬性的訪問;HttpFileCollection類則為多個HttpPostedFile對象提供一個容器,用作保存上傳給服務器的數據結構的類,這樣就可以利用被傳送的文件集合,該文件集合可通過其Files屬性從HttpRequest 對象訪問,一旦服務器接收了請求的整個內容,該集合就可以訪問。
這里,需要注意以下幾點:
客戶端表單的編碼類型Enctype 設置為multipart/form-data的MIME格式,提交表單使用Http的post方法:
<form id=“form1” method=“post” enctype=“multipart/form-data/form-data”runat=“server” >
HttpInputFile控件運行在服務器端,設置runat=server,type=file:
<INPUT id=“fileUp” type=“file” size=“6” runat=“server”>
要上傳多個文件,可以布置多個HttpInputFile控件,然后使用HttpRequest.Files來獲取這些文件。
3 創建新文件夾及設置訪問權限:
輸入新文件夾名后,你就可以在當前路徑下創建新的文件夾,Asp.net下遠程創建新文件夾和在本地機操作完全一樣,非常的簡單,.Net的IO名字空間提供了專門的類庫Directory,通過調用其方法就可以實現,語句如下:
Directory.CreateDirectory(string directory)
其中,字符串directory表示新建文件夾的完整路徑,這個方法默認向所有用戶開放新文件夾的完全讀寫訪問權限。特殊地,對網絡硬盤共享根文件夾(程序中示例為“NetHard”文件夾,你可以更改它)的創建你還可以手動進行,對應地,你需要手動設置以開放此文件夾的寫入權限,在IIS下,你可以在“internet信息服務”下,對該文件夾執行“權限向導”來設置訪問權限。
資源共享時應該考慮安全性。這里,你可以設置用戶對該文件夾的訪問權限,通過設置密碼,你可以指定是否允許用戶進入該文件夾,是否允許刪除該文件夾,或者兩者都禁止。這樣,你可以保護自己的文件,將它們獨占訪問或者限制在一個特定的范圍內(這個范圍的成員應該知道你的密碼),這樣,產品研發部門可以共用一個文件夾,財務部門也通過同樣的方式共用另一個文件夾,不屬于這個部門的人員將限制訪問。當然,這樣的限制你也可以應用到單個文件上(這樣的應用似乎不多,程序未實現)。
此外,為了管理這些文件夾,你需要保留它們的設置信息:文件夾名、位置、受限操作類型、密碼及創建人等。程序中將這些信息寫入一Xml文件(此為folder.xml文件),隨后對文件夾的各種管理操作均通過讀寫該xml文件來進行,
結束語
由于篇幅的限制,其他一些功能的實現此處就不再詳細介紹。但是仍然希望能給那些想要擁有自己的免費硬盤的朋友一點幫助。
參考文獻
[1](美)斯蒂芬·沃爾森ASP.NET揭秘(第二版)[M] 中國電力出版社 ,2004.
[2]天極網新技術研究室編asp.net完全入門 [M] 重慶出版社 ,2001.
[3]施平安等.ASP.NET 2.0技術內幕 [M] 清華大學出版社, 2006
[4]David Jorgensen.使用 XML開發.NET Web服務 [M]科學出版社,2003.
作者簡介:曾靜(1977-),女,江蘇常州人,南通職業大學教育技術中心,講師,研究生在讀,研究方向:網絡多媒體課件制作。