|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
接着上回,新建一个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图片文件展开描述的,但无论上传其它何种类型的文件道理都是相同的,不用改动组件的源程序,只需在使用该组件时为目标文件名指定一准确的扩展名即可。 返回类别: 教程 上一教程: Web网站的错误控制 下一教程: 新闻更新系统(2) 您可以阅读与"用VB6做一个简朴的文件上传组件(二)"相关的教程: · 用VB6做一个简朴的文件上传组件(一) · 无组件上传文件,一个函数搞定 · 一个函数无组件上传文件 · ASP无组件文件上传的实例 · 多表单域无组件文件上传的例子 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |