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

上传

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

时间: 2024-10-07 19:54:08

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

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

最近在单位做的一个项目里需要有文件上传的功能正好手头一本书的附赠光盘里有一个上传组件心中大喜.可惜随之便发现这是一个试用版不给钱就只能用50次太小气了好在头头催得不紧时间充裕干脆自己试着做一个既可长经验值又能长成就感不试白不试以下介绍的便是俺折腾了两天半捣鼓出来的一个只能说是雏形的玩意区区三十行代码大侠们不要笑俺哦这只是写给与俺一样好奇心强但经验值低的弟兄们看的.    文件上载所需的第一步当然是进入一个有"file"表单元素的页面具体就不说了大家都知道.但是若想做一个能够接受该文件并

mfc-用MFC做一个简单的文件上传的程序 ,上传过程中的暂停和继续怎么实现?

问题描述 用MFC做一个简单的文件上传的程序 ,上传过程中的暂停和继续怎么实现? rt 解决方案 能不能中断和继续取决于服务器怎么实现的,服务器必须具有分块接收上传文件的能力. 解决方案二: 你要把你的主要实现和主界面分开,就是用多线程,一个线程用于处理数据,主界面线程用于显示和接受用户操作,当用户按开始按钮时,开启处理线程,暂停时暂停处理线程,继续时再唤醒处理线程就行了. 解决方案三: java Web && 文件上传--简单实现

怎么做一个多线程的文件上传与解压啦?

问题描述 在做一个项目时需要及时对上传的文件进行解压,将需要的数据导入数据库,怎么同时进行这两件事啦? 解决方案 解决方案二:你不是已经说出来了吗?直接做呗!对文件解压然后将解压的文件转换成二进制直接保存到数据库里面.

求助,在做一个简单的图片上传下载应用时出错,看不懂出错信息

问题描述 HTTPStatus500---------------------------------------------------------------------------------typeExceptionreportmessagedescriptionTheserverencounteredaninternalerror()thatpreventeditfromfulfillingthisrequest.exceptionjavax.servlet.ServletExcept

一段简单 ASP文件上传实例

本教程将告诉你需要建立一个简单的应用程序,使用户能够上传PDF文件到服务器的步骤,删除现有的文件和查看他们的浏览器中的文件.这个例子使用我们自己的dgFileUpload组成部分,你可以下载一个15天的试用版在这里,您可以按照教程和测试自己的服务器完成的应用程序.所有的源代码,随着小Access 2000数据库教程在本教程中使用,可以下载在这里作为一个ZIP档案. 在下载并取消荏苒存档,您的网站根目录下创建(如的'C: inetpub wwwroot的 dgUpload'),并把两个ASP页(新

Python实现一个简单的能够上传下载的HTTP服务器

这篇文章主要介绍了用Python实现一个简单的能够上传下载的HTTP服务器,是Python网络编程学习当中的基础,本文示例基于Windows操作系统实现,需要的朋友可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 5

服务器-我这样做asp.net异步文件上传进度条

问题描述 我这样做asp.net异步文件上传进度条 前台两个请求 1.上传文件的请求 2.获取上传进度的请求 1. $("#ufrm").ajaxSubmit({ url: "ReceivFile.ashx", type: "post", success: function (data) { ... 2. $.ajax({ type: "post", url: "Filepro.aspx", data: {

Python+django实现简单的文件上传_python

今天分享一下Django实现的简单的文件上传的小例子. 步骤 •创建Django项目,创建Django应用  •设计模型  •处理urls.py 以及views.py  •设计模板,设计表单  •运行项目,查看数据库 下面我们就一起来分别完成每一个小部分吧. 创建项目和应用 django-admin startproject Django_upload django-admin startapp app 添加一个名为upload的目录,待会要用哦. 然后记得在settings.py 中的INST

Django 实现简单的文件上传

今天分享一下Django实现的简单的文件上传的小例子. 步骤 创建Django项目,创建Django应用 设计模型 处理urls.py 以及views.py 设计模板,设计表单 运行项目,查看数据库 下面我们就一起来分别完成每一个小部分吧. 创建项目和应用 django-admin startproject Django_upload django-admin startapp app 添加一个名为upload的目录,待会要用哦. 然后记得在settings.py 中的INSTALLED_APP