|
文件傳送常用的三種方式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ù)不被非法訪問,并使用簡單、直觀的方式操作。我們常用的文件傳輸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ò)硬盤就是一種很好的解決方式。
網(wǎng)絡(luò)硬盤的優(yōu)勢
網(wǎng)絡(luò)硬盤(也稱共享空間),是服務(wù)器上的一塊硬盤空間,在這里,如果你具備足夠的權(quán)限,你可以對它隨意操作,就象使用你的本地計算機(jī)一樣。要知道,這一切以Http的方式傳輸,以Web的形式展現(xiàn)在所有用戶面前,通過瀏覽器這種熟悉的方式訪問,這樣,"一塊空間,資源互見"的共享模式得以實現(xiàn)!
此外,網(wǎng)絡(luò)硬盤界面在客戶端運行,它允許用戶提交數(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ò)硬盤實現(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、刪除文件或文件夾
開發(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)容
{
//以下是動態(tài)創(chuàng)建數(shù)據(jù)表的方法
DataTable dt=new DataTable();
DataRow dr;
//首先創(chuàng)建數(shù)據(jù)表結(jié)構(gòu)
dt.Columns.Add(new DataColumn("type",System.Type.GetType("System.String")));//類型
dt.Columns.Add(new DataColumn("name",System.Type.GetType("System.String")));//名稱
dt.Columns.Add(new DataColumn("action",System.Type.GetType("System.String")));//操作
dt.Columns.Add(new DataColumn("owner",System.Type.GetType("System.String")));//創(chuàng)建人
//為每一行填充數(shù)據(jù)
foreach(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("NetHard");
string relaUrl=currFullPath.Substring(pos);
string
url="http://10.80.50.1/SharedSpace/"+relaUrl+"/"+txt;//
10.80.50.1為作者服務(wù)器地址,你應(yīng)該將它修改為你所在服務(wù)器地址
dr[2]="下載";
}
else if(Directory.Exists(d)){//如果是文件夾
dr[0]="文件夾";//type類型
string password=GetFolderPassword(d);//取得文件夾密碼信息
int type=GetFolderLimitType(d);
if((password!="no")amp;amp;(type!=1))
dr[2]="
href=PasswordValidate.aspx?path="+d+">密封";//操作action
else
dr[2]=" dr[3]=GetFolderOwner(d);//取文件夾創(chuàng)建者名
}
else
Response.Write("
");
dt.Rows.Add(dr);//添加行
return dt;//返回數(shù)據(jù)表
}
}
這個方法取出指定文件夾下的內(nèi)容分別處理:如果是文件,就顯示"下載"鏈接指向服務(wù)器上文件的Url地址;對文件夾需要視保護(hù)與否及保護(hù)類型進(jìn)一步區(qū)別處理:若"進(jìn)入受限"則顯示"密封"導(dǎo)入到密碼驗證頁,"進(jìn)入不受限"時修改查詢字符串,顯示"進(jìn)入"鏈接指向初始顯示頁。
2、創(chuàng)建新文件夾及設(shè)置訪問權(quán)限:
輸入新文件夾名后,你就可以在當(dāng)前路徑下創(chuàng)建新的文件夾,Asp.net下遠(yuǎn)程創(chuàng)建新文件夾和在本地機(jī)操作完全一樣,非常的簡單,.Net的IO名字空間提供了專門的類庫Directory,通過調(diào)用其方法就可以實現(xiàn),語句如下:
Directory.CreateDirectory(string directory)
其中,字符串directory表示新建文件夾的完整路徑,這個方法默認(rèn)向所有用戶開放新文件夾的完全讀寫訪問權(quán)限。特殊地,對網(wǎng)絡(luò)硬盤共享根文件夾(程序中示例為"NetHard"文件夾,你可以更改它)的創(chuàng)建你還可以手動進(jìn)行,對應(yīng)地,你需要手動設(shè)置以開放此文件夾的寫入權(quán)限,在IIS下,你可以在"internet信息服務(wù)"下,對該文件夾執(zhí)行"權(quán)限向?qū)?來設(shè)置訪問權(quán)限 |
|
【收藏】【打印】【進(jìn)入論壇】 |
|
|
|
|
|
|
|