asp.net 網(wǎng)絡(luò)硬盤(pán)實(shí)現(xiàn)分析
網(wǎng)絡(luò)硬盤(pán)的功能要求:
● 用戶(hù)登錄、注銷(xiāo)、用戶(hù)注冊(cè)
● 新建文件夾、上傳文件
● 查看文件屬性(包括:名稱(chēng),所在目錄,類(lèi)型,大小,創(chuàng)建時(shí)間)
● 刪除文件
● 更換文件圖標(biāo)(分為大圖標(biāo)和小圖標(biāo))
● 通過(guò)搜索找到自己的文件并可以下載
進(jìn)入時(shí)需有用戶(hù)名和密碼方能進(jìn)入,有效的保護(hù)了文件的機(jī)密。
網(wǎng)絡(luò)硬盤(pán)的開(kāi)發(fā)其實(shí)很簡(jiǎn)單,主要使用了類(lèi)庫(kù)Io,用來(lái)實(shí)現(xiàn)對(duì)文件的操作,采取了數(shù)據(jù)庫(kù)和物理路徑相對(duì)應(yīng)映射的方式完成的,下面就來(lái)簡(jiǎn)單說(shuō)說(shuō)其主要的幾個(gè)點(diǎn):
首先是數(shù)據(jù)庫(kù)設(shè)計(jì)這塊,根據(jù)自己的需求設(shè)計(jì)出最適合的數(shù)據(jù)庫(kù),我設(shè)計(jì)的數(shù)據(jù)庫(kù)分3個(gè)表,T_User,T_FileType,T_FileInfo
T_User

T_FileType

T_FileInfo

其次,我們知道網(wǎng)絡(luò)硬盤(pán)是滿(mǎn)足很多用戶(hù)的需求的,所以每個(gè)用戶(hù)都有屬于自己的空間,這就要求我們?cè)陧?yè)面中要用登錄和注冊(cè)功能,這里要提到的就是在注冊(cè)的時(shí)候我們就要相應(yīng)位用戶(hù)分配空間,名稱(chēng)最好不要直接用登錄名,可以采取映射的方式命名,如:用戶(hù)名是admin,那么物理路徑的目錄名就可以為adminDir,adminFile等等,主要是從安全方面考慮的,注冊(cè)完用戶(hù)后就會(huì)在物理空間中顯示初始創(chuàng)建的幾個(gè)文件夾

下面就是要對(duì)文件操作的幾點(diǎn)了

對(duì)文件的操作首先要保證數(shù)據(jù)庫(kù)與物理路徑要保持一致,比如說(shuō)增加一個(gè)文件,物理路徑添加了,數(shù)據(jù)庫(kù)也要有相應(yīng)的增加記錄才可以,沒(méi)什么大的問(wèn)題,在這里把下載的代碼貼出來(lái):
private void FileDownload(string FullFileName)//下載
{
FileInfo DownloadFile = new FileInfo(FullFileName); //設(shè)置要下載的文件
Response.Clear(); //清除緩沖區(qū)流中的所有內(nèi)容輸出
Response.ClearHeaders(); //清除緩沖區(qū)流中的所有頭
Response.Buffer = false; //設(shè)置緩沖輸出為false
//設(shè)置輸出流的 HTTP MIME 類(lèi)型為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());
//將指定的文件直接寫(xiě)入 HTTP 內(nèi)容輸出流。
Response.WriteFile(DownloadFile.FullName);
Response.Flush(); //向客戶(hù)端發(fā)送當(dāng)前所有緩沖的輸出
Response.End(); //將當(dāng)前所有緩沖的輸出發(fā)送到客戶(hù)端
}
修改和轉(zhuǎn)移的邏輯很相似,修改目錄名稱(chēng)的時(shí)候,就是新建一個(gè)目錄,然后通過(guò)子目錄移到新目錄下面,在數(shù)據(jù)庫(kù)中采用遞歸修改子目錄和文件的路徑名稱(chēng),修改文件就更簡(jiǎn)單了,轉(zhuǎn)移也同樣如此...
- ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤(pán)之文件夾實(shí)現(xiàn)
- ASP.NET+XML打造網(wǎng)絡(luò)硬盤(pán)原理分析
- ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤(pán)之兩重要類(lèi)代碼
- ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤(pán)之查看文件夾實(shí)現(xiàn)代碼
- ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤(pán)之上傳文件實(shí)現(xiàn)代碼
- ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤(pán)之下載或在線查看實(shí)現(xiàn)代碼
- ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤(pán)之刪除文件夾實(shí)現(xiàn)代碼
- Asp.net mvc實(shí)時(shí)生成縮率圖到硬盤(pán)
相關(guān)文章
Visual Studio 2010崩潰重啟問(wèn)題(源文件編譯崩潰)
在使用Visual Studio 2010突然出現(xiàn)崩潰現(xiàn)象:源文件修改只要一編譯,馬上就崩潰.搜索了很多的方法也不見(jiàn)效果,經(jīng)過(guò)近1天的折騰,已經(jīng)決定重裝Windows 7了,遇到此問(wèn)題的朋友們可以看看哦,或許對(duì)你有所幫助2013-01-01
詳解.NET中string與StringBuilder在字符串拼接功能上的比較
string與StringBuilder的在字符串拼接時(shí)執(zhí)行效率上有差異,這篇文章主要介紹了詳解.NET中string與StringBuilder在字符串拼接功能上的比較,感興趣的小伙伴們可以參考一下2018-11-11
.NET讀寫(xiě)Excel工具Spire.Xls使用入門(mén)教程(1)
這篇文章主要為大家詳細(xì)介紹了.NET讀寫(xiě)Excel工具Spire.Xls使用入門(mén)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
.NET微信公眾號(hào)開(kāi)發(fā)之查詢(xún)自定義菜單
本文給大家講述的是.NET微信公眾號(hào)開(kāi)發(fā)系列文章的第三篇,主要給大家講解下查詢(xún)自定義菜單的相關(guān)內(nèi)容,有需要的小伙伴可以參考下。2015-07-07
asp.net 獲取Datalist中Checkbox的值的小結(jié)
最近開(kāi)發(fā)過(guò)程中遇到一個(gè)小問(wèn)題,要獲取checkbox的值,在網(wǎng)上搜索了一下,發(fā)現(xiàn)基本上都是用JS實(shí)現(xiàn)的,現(xiàn)在我將自己的做法記錄一下,以便以后繼續(xù)使用。2010-04-04

