您的位置:首页精文荟萃软件资讯 → 用VB6做一个简单的文件上传组件二

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

时间:2004/10/7 19:19:00来源:本站整理作者:蓝点我要评论(0)

接着上回,新建一个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文件中这样使用该组件

    <%

      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图片文件展开描述的,但无论上传其它何种类型的文件道理都是一样的,不用改动组件的源程序,只需在使用该组件时为目标文件名指定一正确的扩展名即可。




相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本