国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用VB6做一個簡單的文件上傳組件(二)

2019-11-18 22:12:17
字體:
來源:轉載
供稿:網友
接著上回,新建一個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

        'ObjectContext的使用類似于ASP中的applicationsession對象,
        '可以用關鍵值對其內部的一些特定的對象實例進行訪問,
        '如ObjectContext("Response")

        Set objContext=GetObjectContext()
        Set objRequest=objContext("Request")

        '以下的一段代碼與前文的腳本程序類似,
        '只不過對變量的定義要嚴格些

        Dim FormData() As Byte,CLStr,DivStr
        Dim DataStart As Long,DataSize As Long

        DataSize=objRequest.TotalBytes
        Redim FormData(DataSize-1)
        FormData=objRequest.BinaryRead(DataSize)
        CLStr=ChrB(13) & ChrB(10)
        DataStart=InStrB(FormData,CLStr & CLStr)+4
        DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1)
        DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2
        FormData=MidB(FormData,DataStart,DataSize)

        '創建一個二進制文件并將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圖片文件展開描述的,但無論上傳其它何種類型的文件道理都是一樣的,不用改動組件的源程序,只需在使用該組件時為目標文件名指定一正確的擴展名即可。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潞西市| 罗山县| 大洼县| 东辽县| 东阳市| 洛南县| 新安县| 临桂县| 剑川县| 高清| 阿合奇县| 太仓市| 来凤县| 兴义市| 古蔺县| 赤壁市| 沾化县| 调兵山市| 阿荣旗| 玛纳斯县| 安阳县| 会理县| 滦南县| 阳朔县| 交口县| 五指山市| 彰化县| 南宫市| 天水市| 古蔺县| 盐城市| 海宁市| 达尔| 兴和县| 连平县| 邯郸市| 体育| 衢州市| 和顺县| 密山市| 正镶白旗|