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