接著上回,新建一個ActiveX DLLs類型的工程,并將缺省的工程名由“PRoject1”改為“Songbird”(當然你也有權不這樣改,呵呵),將缺省的類名由“Class1”改為“FileUp”,至于為什么要這樣改,以后你便知道了。 要想實現讀取上傳文件字節數據的功能,勢必要涉及到Request對象,可是在VB中該怎么做呢?簡單,只需要在工程中加入適當的類型庫的參考即可。點擊Project菜單選擇References,在隨之出現的對話框中選中Microsoft Active Server Pages Object項以及Microsoft Transaction Server Type Library項,單擊OK,便可以在VB環境中象寫asp代碼一樣操縱Request、Response等對象了,你會感到非常親切的。 以下便是具體的程序代碼:
Public Function SaveFile(Pathname As String) As String OnError Goto ErrorCode Dim objContext As ObjectContext Dim objRequest As Request
'創建一個二進制文件并將FormData寫入其中 Open Pathname For Binary As 1 Put #1,,FormData Close #1
SaveFile="OK!" Exit Function ErrorCode: SaveFile=Err.Description End Function
大功告成!剩下的便是怎樣使用這段程序了。 點擊File菜單,選擇Make Songbird.dll,系統便會將這段程序編譯成DLL文件并自動在本機進行注冊。除非你直接在服務器上開發,否則應將此文件拷貝到NT服務器的System32目錄下并運行“regsvr32 Songbird.dll”命令進行注冊。注冊成功之后,在負責接受上傳文件的那個ASP文件中這樣使用該組件: <% Dim fu Set fu=Server.CreateObject("Songbird.FileUp") '用慣了CreateObject("ADODB.Connection"), '此時看見了用自己的大名命名的組件,俺的內心立馬充滿了無限的激動, '哈哈哈哈!...@#$%&*,對不起,抒情好象不是俺的強項,呵呵
'將文件保存到服務器的D盤根目錄下 Response.Write fu.SaveFile("D:/a.gif") Set fu=Nothing %> OK!希望你在瀏覽器上看到的是“OK!”
注: 1、這個組件只實現了最最基本的功能,尚不實用,自己用用、哄哄頭頭也就算了。寫出來的目的只是為了讓感興趣的朋友共享其中一些可資利用的東西。 2、往NT服務器上傳文件時,必須確保瀏覽者對目標文件夾至少擁有添加和更改的權限,否則會報“File Name or Number Error”。 3、在書寫截取文件數據的語句時注意不要搞錯字節數,否則程序運行時并不會報錯,但服務器收到的只是一堆無用的字節。 4、雖然本文是圍繞著上傳一GIF圖片文件展開描述的,但無論上傳其它何種類型的文件道理都是一樣的,不用改動組件的源程序,只需在使用該組件時為目標文件名指定一正確的擴展名即可。