LyfUpload组件1.1-使用手册 2000.4.3 作者:刘玉锋
文件上传组件。。。 主页:VB爱好者(http://vbfans.yeah.net)
简介:

    LyfUpload 是一个免费 的ASP组件,遵从 RFC-1867 HTTP 请求, 它可以在ASP页面中接收客户端浏览器使用encType= "multipart/form-data" 的Form上载的文件。

  本版本支持单文件上载、多文件上载、限制文件大小上载、限制某一类型文件上载、文件上载到数据库、数据库中读取文件及文件上载重命名等功能。

功能:

  • 支持单文件上传
  • 支持上传多个文件
  • 可以将上传的文件改名保存
  • 可以同时使用其它的form元素的信息
  • 支持限制文件上传的大小
  • 支持限制文件上传的类型 (1.1版修改,支持多文件类型)
  • 可以得到上传文件的大小 (1.1版新增功能)
  • 支持将文件内容保存进数据库,如上载图形文件、DOC文件等各类Windows文件 (1.1版新增功能)
  • 支持从数据库中读取上载文件到数据库中的记录,如显示图形文件、DOC文件等各类Windows文件 (1.1版新增功能)
  • 可以得到上传文件的MIME类型,如gif文件为images/gif
  • 本版本完全免费,没有任何限制

运行环境:

Windows 2000 and IIS 5.0,  or
Windows NT 4.0 and IIS 3.0/IIS 4.0, or
Windows 95/98 and Personal Web Server with ASP support.

主要文件:

lyfupload.dll   文件上传组件

readme.txt     使用说明(txt版本)

RFC1867.txt 文件上传标准

default.htm    演示用起始页面

help.htm       使用说明(html版本)

demo1-demo6.htm(asp) 演示文件

使用方法:

一、注册组件

使用 regsvr32 lyfupload.dll 命令注册!

二、组件方法介绍:

Request方法

得到上一个页面中表单元素的值;

声明:

Public Function Request(nm As String)

返回值:

为元素的值,字符串类型;

FileType方法

得到上传文件的Content-Type

声明:

Public Function FileType(strTag As String)

参数介绍:

strTag为Form中文件元素的名字,如"File1":

返回值:

文件上传成功,返回文件的Content-Type

不成功,返回为""

SaveFile方法

上传客户端选择的文件

声明:

SaveFile(strTag As String, strPath As String, Optional DestFileName As String) As String

参数介绍:

strTag为Form中文件元素的名字,如"File1":

strPath为要文件保存在本机的目录;

DestFileName(可选参数),代表文件上传后重命名保存的名字;

返回值:

成功,返回上载的文件的名字;

不成功,如果上传失败,返回为"";

不成功,如果上传文件后缀不对,返回为"0"(当设置了extName属性时有效);

不成功,如果上传文件的大小太大,返回为"1"(当设置了MaxSize属性时有效);

SaveFileToDb方法 (1.1版新功能)

上传各类文件到数据库中(同savefile方法不同的是直接保存文件到数据库中而不保存为盘文件)

声明:

SaveFile(strTag As String) As String

参数介绍:

strTag为Form中文件元素的名字,如"File1";

返回值:

成功,返回上载的文件的名字;

不成功,如果上传失败,返回为"";

不成功,如果上传文件后缀不对,返回为"0"(当设置了extName属性时有效);

不成功,如果上传文件的大小太大,返回为"1"(当设置了MaxSize属性时有效);

About方法

显示LyfUpload组件的作者及版本号等信息

调用:

<%
dim ss

Set ss = Server.CreateObject("LyfUpload.UploadFile") '创建LyfUpload组件对象

ss.about

%>

三、组件属性介绍

ExtName属性

限制上载文件的类型;

调用:

Set obj = Server.CreateObject("LyfUpload.UploadFile")

obj.extname="gif"  '设置文件上传只能是gif文件

obj.extname="gif,jpg,bmp"  '多文件类型请用","隔开

MaxSize属性

限制上载文件的大小;

调用:

Set obj = Server.CreateObject("LyfUpload.UploadFile")

obj.maxsize=2048 '设置文件上传的最大为2048个字节(2K)

FileSize属性(1.1版新功能)

得到上载文件的大小;

调用:

Set obj = Server.CreateObject("LyfUpload.UploadFile")

response.write obj.filesize

DBContent属性(1.1版新功能)

得到上载文件的实际内容,为二进制流(不能直接读取,主要用于上载文件到数据库中);

调用:

Set obj = Server.CreateObject("LyfUpload.UploadFile")

ss=obj.SaveFiletodb("file1") '保存文件到服务器

aa=obj.filetype("file1") '得到文件的Content-Type

'----文件上载到数据库中---------

rs.AddNew

rs("name")=trim(aa)

rs("pic").AppendChunk obj.DBContent'BLOB数据不能直接赋值

rs.Update

rs.movelast

四、具体调用实例

普通上载:

1、调用显示的htm或者asp文件中加入以下代码:

<form method="POST" enctype="multipart/form-data" action="demo1.asp">

<p>文本框1: <input type="text" name="text1" size="20"><br>

选择文件:<input type="file" name="file1"><br>

<input type="submit" value="上载"

style="background-color: rgb(0,0,255); color: rgb(255,255,0)"> </p>

</form>

注意:Form中一定要包含enctype="multipart/form-data"语句

2、后台处理程序中加入下面代码:

<%@Language=VBScript %>

<HTML>

<BODY>

<%

Set obj = Server.CreateObject("LyfUpload.UploadFile")

txt = obj.request("text1") '得到form元素的值

Response.Write( "文本框1的输入值是: " & txt)

Response.Write "<br>"

ss=obj.SaveFile("file1", "C:\temp") '保存文件到服务器

aa=obj.filetype("file1")

if ss<> "" then

Response.Write "选择的文件已经上载到服务器!<br>"

Response.Write("文件名:" & ss)

Response.Write("<br>Content-Type:" & aa) '得到Content-Type

end if

obj.about '关于LyfUploa1.1

%>

</BODY >

</html>

文件上载到数据库(此处仅加入gif图形上载到数据库中及从数据库中读取的功能,其它请看DEMO文件)

1、调用显示的htm或者asp文件中加入以下代码:

<form method="POST" enctype="multipart/form-data" action="demo4.asp">

<p>文本框1: <input type="text" name="text1" size="20"><br>

选择文件:<input type="file" name="file1"><br>

<input type="submit" value="上载"

style="background-color: rgb(0,0,255); color: rgb(255,255,0)"> </p>

</form>

注意:Form中一定要包含enctype="multipart/form-data"语句

2、后台处理程序中加入下面代码:

<%@Language=VBScript %>

<%

'设置数据库链接

strConn = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("new.mdb")

session("strconn")=strConn

Set dbc = Server.CreateObject("ADODB.Connection")

dbc.open strConn

set rs=server.CreateObject("adodb.recordset")

rs.Open "SELECT * FROM product",dbc,1,3

%>

<HTML>

<BODY>

<%

Set obj = Server.CreateObject("LyfUpload.UploadFile")

obj.extname="gif"

txt = obj.request("text1") '得到form元素的值

Response.Write( "文本框1的输入值是: " & txt)

Response.Write "<br>"

ss=obj.SaveFiletodb("file1") '保存文件到服务器

aa=obj.filetype("file1") '得到文件的Content-Type

if ss= "" then

Response.Write ("文件上传失败!")

elseif ss= "0" then

Response.Write ("文件尺寸过大!")

elseif ss= "1" then

Response.Write ("文件不是gif文件!")

else

'----文件上载到数据库中---------

rs.AddNew

rs("name")=trim(aa)

rs("pic").AppendChunk obj.DBContent'BLOB数据不能直接赋值

rs.Update

rs.movelast

session("ID")=rs("ID")

rs.Close

dbc.Close

set rs=nothing

set dbc=nothing

'------------------------------上载到数据库中结束

Response.Write "选择的文件已经上载到服务器!<br>"

Response.Write("文件名:" & ss)

Response.Write("<br>Content-Type:" & aa) '得到Content-Type

end if

obj.about '关于LyfUploa1.1

%>

<br>

<a href="pictest.asp?ID=<%=session("ID")%>">点击此处查看上传后数据库中的GIF文件!</a>

</BODY >

</html>

3、从数据库中显示图形的asp页面(pictest.asp)

<%

Function SetForDisplay(field, contentType) '设置文件的大小及MIME类型

contentType = LCase(trim(contentType))

nFieldSize = field.ActualSize

bytes = field.GetChunk(nFieldSize)

Session("Bytes") = bytes

Session("Type") = contentType

End Function

%>

<%

sql = "select * from product where id=" & request("ID")

Set oRS = Server.CreateObject("ADODB.Recordset")

oRS.CursorLocation = 3

strConn = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("new.mdb")

oRS.Open sql, strConn

SetForDisplay oRS("pic"), "image/gif" '"image/gif" 为MIME类型

'附:常见的MIME类型

'GIF文件  "image/gif"

'BMP文件 "image/bmp"

'JPG文件 "image/jpeg"

'zip文件 "application/x-zip-compressed"

'DOC文件 "application/msword"

'文本文件 "text/plain"

'HTML文件 "text/html"

'一般文件 "application/octet-stream"

Set oRS.ActiveConnection = Nothing

%>

<javascript src="theImg.asp"> '调用处理页面

<%response.write(Session("Type"))%>

4、最后处理页面(theImg.asp)

<%

response.Expires = 0

response.Buffer = True

response.Clear

response.contentType = Session("Type")

response.BinaryWrite Session("Bytes")

Session("Type") = ""

Session("Bytes") = ""

response.End

%>

注意:要得到上一个页面中的元素值,请使用LyfUpload组件的Request方法,使用Request.form会使得程序不能正常运行

其它功能的实例请看其它的演示程序的代码!!!!

如果在使用中发现任何问题或者好的建议请同我联系!!!

我的Email地址为:coolknight@263.net