設計可參考以下作法:
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