欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

用VB6做一个简单的文件上传组件(二)

程序员文章站 2022-03-30 10:02:06
接着上回,新建一个activex dlls类型的工程,并将缺省的工程名由“project1”改为“songbird”(当然你也有权不这样改,呵呵),将缺省的类名由“class1”改...
接着上回,新建一个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中的application和session对象,
        可以用关键值对其内部的一些特定的对象实例进行访问,
        如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文件中这样使用该: