设计可参考以下作法:
1.你需要一个上传TXT档案的网路元件 例如 LyfUpload.dll
来选择你要上传哪各TXT文件,上传到网站主机上
(写一个上传网页叫TEST1.ASP)
2.在上传的同时,你必须同时先安装好资料库软体(例如 ACCESS ,SQL SERVER )
以方便将您上传的TXT文件内容资料,顺便转换存到资料库软体中
(上传网页TEST1.ASP)
3.再来就是网页显示的问题了
写好显示该资料库软体中该纪录的资料即可.
(写一个显示网页叫TEST2.ASP)
以下为 LyfUpload元件1.1-档上传组件 说明
写作日期: 2000.4.4
作者: 刘玉锋
Email:
coolknight@263.net主页: VB爱好者(
http://vbfans....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