所謂“網路硬碟”,就是將伺服器的磁碟空間提供給使用者使用,使用者可以通過它在互連網上實現檔案的上傳,下載和刪除以及檔案夾的建立與刪除。並可以通過共用檔案實現檔案的網際網路共用。 實際要求是在用戶端完成對伺服器系統檔案或檔案夾的訪問,建立和刪除等功能。
網路硬碟的功能要求:
● 使用者登入、登出、使用者註冊
● 建立檔案夾、上傳檔案
● 查看檔案屬性(包括:名稱,所在目錄,類型,大小,建立時間)
● 刪除檔案
● 更換檔案表徵圖(分為大表徵圖和小表徵圖)
● 通過搜尋找到自己的檔案並可以下載
進入時需有使用者名稱和密碼方能進入,有效保護了檔案的機密。
網路硬碟的開發其實很簡單,主要使用了類庫Io,用來實現對檔案的操作,採取了資料庫和實體路徑相對應映射的方式完成的,下面就來簡單說說其主要的幾個點:
首先是資料庫設計這塊,根據自己的需求設計出最適合的資料庫,我設計的資料庫分3個表,T_User,T_FileType,T_FileInfo
T_User
T_FileType
T_FileInfo
其次,我們知道網路硬碟是滿足很多使用者的需求的,所以每個使用者都有屬於自己的空間,這就要求我們在頁面中要用登入和註冊功能,這裡要提到的就是在註冊的時候我們就要相應位使用者指派空間,名稱最好不要直接用登入名稱,可以採取映射的方式命名,如:使用者名稱是admin,那麼實體路徑的目錄名就可以為adminDir,adminFile等等,主要是從安全方面考慮的,註冊完使用者後就會在物理空間中顯示初始建立的幾個檔案夾
下面就是要對檔案操作的幾點了
對檔案的操作首先要保證資料庫與實體路徑要保持一致,比如說增加一個檔案,實體路徑添加了,資料庫也要有相應的增加記錄才可以,沒什麼大的問題,在這裡把下載的代碼貼出來:
複製代碼 代碼如下:private void FileDownload(string FullFileName)//下載
{
FileInfo DownloadFile = new FileInfo(FullFileName); //設定要下載的檔案
Response.Clear(); //清除緩衝區流中的所有內容輸出
Response.ClearHeaders(); //清除緩衝區流中的所有頭
Response.Buffer = false; //設定緩衝輸出為false
//設定輸出資料流的 HTTP MIME 類型為application/octet-stream
Response.ContentType = "application/octet-stream";
//將 HTTP 頭添加到輸出資料流
Response.AppendHeader("Content-Disposition",
"attachment;filename=" +
HttpUtility.UrlEncode(DownloadFile.FullName.Substring(FullFileName.LastIndexOf("\\") + 1),
System.Text.Encoding.UTF8));
Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
//將指定的檔案直接寫入 HTTP 內容輸出資料流。
Response.WriteFile(DownloadFile.FullName);
Response.Flush(); //向用戶端發送當前所有緩衝的輸出
Response.End(); //將當前所有緩衝的輸出發送到用戶端
}
修改和轉移的邏輯很相似,修改目錄名稱的時候,就是建立一個目錄,然後通過子目錄移到新目錄下面,在資料庫中採用遞迴修改子目錄和檔案的路徑名稱,修改檔案就更簡單了,轉移也同樣如此...