发信人: wego() 
整理人: qcrsoft(2002-05-21 23:22:10), 站内信件
 | 
 
 
需要一服务器端控件,如SAFileUP(http://www.serverpages.com/upload )等, 
 
 也可以自己用VB写:
 编写Web方式上载文件的ASP组件 
 黄明建 
 ---- 基于Web方式上载文件,要遵从RFC1867标准。但IIS没有提供这方面的支持 
 。虽然可以从Internet上下载这方面的ASP组件,但大多都是试用版,有使用时间 
 的限制;并且,功能上也不能完全满足自己的要求。我们可以编写自己的ASP组件 
 ,使之适合自己的应用系统的需求。 
 
 ---- 我们假设有如下的一个上载文件的.html文件,它被命名为demo.htm: 
 
     < HTML >
     < BODY >
 < FORM  method="post"  enctype=
  "multipart/form-data"  action="upload.asp" >
     < input  type=text  name="text1" >< BR >
     < input  type=file   name="file1" >< BR >
     < input  type=submit  value="上载" >
     < /FORM >
     < /BODY >
     < /HTML >
 ---- 按照RFC1867标准,demo.htm传到服务器端的二进制数据具有类似的如下格 
 式: 
 
    -----------------------------5fi25134734389
    Content-Disposition: form-data; name="text1"
 
    Text test
    -----------------------------5fi25134734389--
    Content-Disposition: form-data; 
    name="file1"; filename="E:\GIF\girl.gif"
    Content-Type: image/gif
 
    GIF89a? ????噜鄛}}^^^υ,?  
    -----------------------------5fi25134734389
 ---- 其中, 类似于“-----------------------------5fi25134734389”的这一 
 段字符串我们称之为“定界符”。我们看到,demo.htm文件中的Form元素“text 
 1”,“file1”出现在定界符后的“name=”标记处;对text1而言,“name=”标 
 记后紧接两对回车换行符(chr(13)&chr(10)&chr(13)&chr(10))即是客户端输入 
 的值,该值结束时跟一对回车换行符和一个定界符;对file1而言,“name=”标 
 记后的“filename=” 标记指出了客户端上载的文件的路径和文件名,下一行指 
 出了文件的类型,后跟两对回车换行符表示文件数据的开始,文件数据结束时跟 
 一对回车换行符和一个定界符。 
 
 ---- 下面,我们以VB6.0中文版环境为例,讲述如何编写上载文件的ASP组件:  
 
 
 ---- 1. 进入VB时,选择工程类型为ActiveX DLL。 
 
 ---- 2. 在工程窗口中选择工程,在属性窗口中给工程重命名,如“Huang”; 
  在工程窗口中选择类模块“Class1”, 在属性窗口中将其重命名,如“Upload 
 File”,并且,将Instancing属性设置为“5-MultiUse”。 
 
 ---- 3. 选择VB菜单“工程—— >引用—— >Microsoft Active Server Pages 
  Object Library”,单击“确定”。 
 
 ---- 4. 编写类模块,代码 Zip 2KB 
 
 ---- 对存入文件的目标目录,要有写入的权限。 
 
 ---- 对OnStartPage过程的说明:当客户请求一个基于ASP的Web文件时,Web 服 
 务器会调用该ASP文件上所有ASP组件的OnStartPage方法。Web开发者可以在OnSt 
 artPage过程中访问ASP的内建组件。 
 
 ---- 5.选择“文件—— >生成Huang.DLL”, 生成Huang.DLL。如果VB就在IIS 
 服务器上,则VB会自动注册该组件;否则,把Huang.DLL拷贝到IIS服务器所在的 
 Windows NT目录下,运行“Regsrv32 Huang.DLL”注册该组件。 
 
 ---- 至此,文件上载的ASP组件编写并注册完成。 
 
 ---- 编写upload.asp文件如下: 
 
    < %@ Language=VBScript % >
    < HTML >
    < BODY >
    < %
     Dim  txtValue
  
     Set obj = Server.CreateObject("Huang.UploadFile")
     txtValue = obj.GetTheValue("text1") 
     Response.Write( "text1的输入值是: " & txtValue)
     Response.Write "< P > < /p >"
     Response.Write "选择的文件已经上载到服务器!"
     obj.SaveTheFile "file1", "c:\test"
    % >
    < /BODY >
    < /HTML >
 ---- 上述例子在VB6.0中文版和IIS4.0中文版下调试通过。
 
 代码可到:http://www.ccw.com.cn/99/tips/9905/052601-06.zip 下载。
 
 
 ---- 基于Web方式上载文件,要遵从RFC1867标准。但IIS没有提供这方面的支持 。虽然可以从Internet上下载这方面的ASP组件,但大多都是试用版,有使用时间 的限制;并且,功能上也不能完全满足自己的要求。我们可以编写自己的ASP组件 ,使之适合自己的应用系统的需求。 
 
 ---- 我们假设有如下的一个上载文件的.html文件,它被命名为demo.htm: 
 
     < HTML >
     < BODY >
 < FORM  method="post"  enctype=
  "multipart/form-data"  action="upload.asp" >
     < input  type=text  name="text1" >< BR >
     < input  type=file   name="file1" >< BR >
     < input  type=submit  value="上载" >
     < /FORM >
     < /BODY >
     < /HTML >
 ---- 按照RFC1867标准,demo.htm传到服务器端的二进制数据具有类似的如下格 式: 
 
    -----------------------------5fi25134734389
    Content-Disposition: form-data; name="text1"
 
    Text test
    -----------------------------5fi25134734389--
    Content-Disposition: form-data; 
    name="file1"; filename="E:\GIF\girl.gif"
    Content-Type: image/gif
 
    GIF89a? ????噜鄛}}^^^υ,?  
    -----------------------------5fi25134734389
 ---- 其中, 类似于“-----------------------------5fi25134734389”的这一 段字符串我们称之为“定界符”。我们看到,demo.htm文件中的Form元素“text 1”,“file1”出现在定界符后的“name=”标记处;对text1而言,“name=”标 记后紧接两对回车换行符(chr(13)&chr(10)&chr(13)&chr(10))即是客户端输入 的值,该值结束时跟一对回车换行符和一个定界符;对file1而言,“name=”标 记后的“filename=” 标记指出了客户端上载的文件的路径和文件名,下一行指 出了文件的类型,后跟两对回车换行符表示文件数据的开始,文件数据结束时跟 一对回车换行符和一个定界符。 
 
 ---- 下面,我们以VB6.0中文版环境为例,讲述如何编写上载文件的ASP组件:  
 
 ---- 1. 进入VB时,选择工程类型为ActiveX DLL。 
 
 ---- 2. 在工程窗口中选择工程,在属性窗口中给工程重命名,如“Huang”;  在工程窗口中选择类模块“Class1”, 在属性窗口中将其重命名,如“Upload File”,并且,将Instancing属性设置为“5-MultiUse”。 
 
 ---- 3. 选择VB菜单“工程—— >引用—— >Microsoft Active Server Pages  Object Library”,单击“确定”。 
 
 ---- 4. 编写类模块,代码 Zip 2KB 
 
 ---- 对存入文件的目标目录,要有写入的权限。 
 
 ---- 对OnStartPage过程的说明:当客户请求一个基于ASP的Web文件时,Web 服 务器会调用该ASP文件上所有ASP组件的OnStartPage方法。Web开发者可以在OnSt artPage过程中访问ASP的内建组件。 
 
 ---- 5.选择“文件—— >生成Huang.DLL”, 生成Huang.DLL。如果VB就在IIS 服务器上,则VB会自动注册该组件;否则,把Huang.DLL拷贝到IIS服务器所在的 Windows NT目录下,运行“Regsrv32 Huang.DLL”注册该组件。 
 
 ---- 至此,文件上载的ASP组件编写并注册完成。 
 
 ---- 编写upload.asp文件如下: 
 
    < %@ Language=VBScript % >
    < HTML >
    < BODY >
    < %
     Dim  txtValue
  
     Set obj = Server.CreateObject("Huang.UploadFile")
     txtValue = obj.GetTheValue("text1") 
     Response.Write( "text1的输入值是: " & txtValue)
     Response.Write "< P > < /p >"
     Response.Write "选择的文件已经上载到服务器!"
     obj.SaveTheFile "file1", "c:\test"
    % >
    < /BODY >
    < /HTML >
 ---- 上述例子在VB6.0中文版和IIS4.0中文版下调试通过。
 
  -- ※ 修改:.wego 于 Jun  6 10:49:46 修改本文.[FROM: 202.103.160.59] ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.160.59]
  | 
 
 
 |