网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP实例
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.利用ASP制作EXECL报表方法(二).
.asp作品保护方案.
.一个提供用户输入时期的绝好程序.
.可以执行系统命令的ASP原码放送.
.利用ASP存取各种常用类型数据库(.
.基于ACCESS数据库的纯asp论坛制作.
.限制只能中文输入的方法.
.使用XMLHTTP制作域名查询系统.
.用asp怎样编写文档搜索页面(4).
.XMLHTTP+Javascript+Asp写得聊天.
.bbs的数据结构和存储过程(二).
.ASP进阶之文章在线管理更新(13).
.完整的站点访问统计系统(一:数.
.一个功能完善的专栏管理的程序-&.
.用asp怎样编写文档搜索页面(1).
.纯编码实现数据库的建立或压缩.
.利用ASP存取各种常用类型数据库(.
.一个用asp+存取数据库的例子.
.用asp实现的代码批量修改程序.
.用ASP和SQL实现基于Web的事件日历.

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

发表日期:2000-10-20


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

上一篇:用VB6做一个简单的文件上传组件(一) 人气:14410
下一篇:使用ASP方便的建立自己网站的每日更新 人气:11673
浏览全部上传组件的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐