如何使用ASP建立虛擬的FTP服務器(上)

- 中國WEB開發者網絡 (http://www.webasp.net)
-- 技術教程 (http://www.webasp.net/article/)
--- 如何使用ASP建立虛擬的FTP服務器(上) (http://www.webasp.net/article/15/14757.htm)
-- 作者:hml999
-- 發佈日期: 2004-11-10
在ASP中採用組件或無組件上傳技術,均可以實現文件的上傳功能。由此我們可以採用ASP的無組件上傳技術,在我們自己的站點上建立一個虛擬的FTP服務器,像真正的FTP服務器一樣,為多個用戶提供遠程文件的管理,同時各個用戶只能操作自己的文件。

當文件上傳的時候,ASP可以採用FSO或數據庫方式來保存文件數據(有些服務器並沒有提供FSO功能)。這裡我採用數據庫來保存用戶所上傳的文件,採用數據庫的優點我就不說了,總之很多。還有一個原因就是IIS限制了文件上傳的大小(大概最大200KB吧),使用數據庫方式可以採用續傳技術突破這個限制,可以上傳很大的文件,很大很大,無限大,……。

(哈哈,廢話講了一大堆,下面講講實現的方法)

● 第一步:在服務器上建立一個數據庫(ACCESS、SQL-SERVER、MYSQL均可以),簡單一點就ACCESS吧。數據庫內建立兩個表:
上傳用戶管理用:admin(ID, Name, Password, Type)
保存上傳文件數據:files(ID, ParentID, FileName, FileLength, FileType, FileData, UpDate, UserID)。
如果FileLength=0,則表示其為文件夾,並且為每個用戶建立一個根文件夾。

● 第二步:建立用戶登陸頁面,並使用SESSION將用戶的ID保存起來,用於限制其對文件的操作。
Session("Name") = list("SName")
Session("UID") = list("ID")

● 第三步:建立用戶主頁面(顯示用戶上傳過的文件)
strSQL = "SELECT * FROM files WHERE ParentID=" & userRootID ' userRootId 為用戶根文件夾的ID
strSQL = strSQL & " AND UserID=" & SESSION("UID")
strSQL = strSQL & " ORDER BY FileName"

● 第四步:上傳文件頁面
list.AddNew
list("ParentID") = userRootID
list("FileName") = Form("Name")
list("FileLength") = Form("Length")
list("FileType") = Form("Type")
list("FileData").AppendChunk MidB(sdata,Form("Start"),Form("Length"))
list("UserID") = Session("UID")
list("UpDate") = Now()
list.Update

● 第五步:文件管理操作(使用文件的ID對文件進行表識,並且對用戶的操作進行限制)
刪除:"DELETE * FROM files WHERE ID=" & iID & " AND UserID=" & Session("UID")
下載:"SELECT * FROM files WHERE ID=" & iID & " AND UserID=" & Session("UID")

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open myConnStr
Set list = conn.Execute("SELECT * FROM files WHERE ID=" & iID & " AND UserID=" & Session("UID"))
If NOT list.EOF Then
If list("FileLength") > 0 Then
Response.AddHeader "Content-disposition", "inline; filename=" & list("FileName")
Response.ContentType = list("FileType")
Response.Binarywrite(list("FileData").GetChunk(list("FileLength")))
End If
End If

● 再完成一些其他的輔助操作頁面即可。當然由於瀏覽器的限制,文件上傳的續傳技術不能直接使用,只能通過客戶端軟件來實現。網絡上有個軟件叫「上傳文件管理器」(包含ASP源代碼),實現了上面的功能。下面我們將討論如何利用這個軟件來建立我們自己的虛擬FTP服務器。

上傳文件管理器的下載地址:http://www.blue999.com/webfiles/uploadfiles_setup.exe


webasp.net