組件:"Adodb.Stream"
有下列方法:
Cancel 方法
使用方法如下
Object.Cancel
說(shuō)明:取消執行掛起的異步 Execute 或 Open 方法的調用。
Close 方法
使用方法如下
Object.Close
:關(guān)閉對像
CopyTo 方法
使用方法如下
Object.CopyTo(destStream,[CharNumber])
說(shuō)明:將對像的數據復制,destStream指向要復制的對像,CharNumber為可選參數,指要復制的字節數,不選為全部復制。
Flush 方法
使用方法如下
Object.Flush
說(shuō)明:
LoadFromFile 方法
使用方法如下
Object.LoadFromFile(FileName)
說(shuō)明:將FileName指定的文件裝入對像中,參數FileName為指定的用戶(hù)名。
Open 方法
使用方法如下
Object.Open(Source,[Mode],[Options],[UserName],[Password])
說(shuō)明:打開(kāi)對像,
參數說(shuō)明:Sourece 對像源,可不指定
Mode 指定打開(kāi)模式,可不指定,可選參數如下:
adModeRead =1
adModeReadWrite =3
adModeRecursive =4194304
adModeShareDenyNone =16
adModeShareDenyRead =4
adModeShareDenyWrite =8
adModeShareExclusive =12
adModeUnknown =0
adModeWrite =2
Options 指定打開(kāi)的選項,可不指定,可選參數如下:
adOpenStreamAsync =1
adOpenStreamFromRecord =4
adOpenStreamUnspecified=-1
UserName 指定用戶(hù)名,可不指定。
Password 指定用戶(hù)名的密碼
Read 方法
使用方法如下:
Object.Read(Numbytes)
說(shuō)明:讀取指定長(cháng)度的二進(jìn)制內容。
參數說(shuō)明:Numbytes指定的要讀取的找度,不指定則讀取全部。
ReadText 方法
使用方法如下:
Object.ReadText(NumChars)
說(shuō)明:讀取指定長(cháng)度的文本
參數說(shuō)明:NumChars指定的要讀取的找度,不指定則讀取全部。
SaveToFile 方法
使用方法如下:
Object.SaveToFile(FileName,[Options])
說(shuō)明:將對像的內容寫(xiě)到FileName指定的文件中
參數說(shuō)明:FileName指定的文件
Options 存取的選項,可不指定,可選參數如下:
adSaveCreateNotExist =1
adSaveCreateOverWrite =2
SetEOS 方法
使用方法如下:
Object.setEOS()
說(shuō)明:
SkipLine 方法
使用方法如下:
Object.SkipLine()
說(shuō)明:
Write 方法
使用方法如下:
Object.Write(Buffer)
說(shuō)明:將指定的數據裝入對像中。
參數說(shuō)明:Buffer 為指定的要寫(xiě)入的內容。
WriteText 方法
使用方法如下:
Object.Write(Data,[Options])
說(shuō)明:將指定的文本數據裝入對像中。
參數說(shuō)明:Data 為指定的要寫(xiě)入的內容。
Options 寫(xiě)入的選項,可不指定,可選參數如下:
adWriteChar =0
adWriteLine =1
有下列屬性:
Charset
EOS 返回對像內數據是否為空。
LineSeparator 指定換行格式,可選參數有
adCR =13
adCRLF =-1
adLF =10
Mode 指定或返加模式。
Position 指定或返加對像內數據的當前指針。
Size 返回對像內數據的大小。
State 返加對像狀態(tài)是否打開(kāi)。
Type 指定或返回的數據類(lèi)型,可選參數為:
adTypeBinary =1
adTypeText =2
用了6行代碼實(shí)現了無(wú)組件上傳:
strFileName = Request.QueryString("file1")
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 ‘ adTypeBinary
objStream.Open
objStream.LoadFromFile strFileName
objStream.SaveToFile Server."123_onweb.gif",2
使用方法:
把上面的代碼寫(xiě)成upload.asp
在瀏覽器里面輸入:
http://XXX/upload.asp?file1=c:\上傳文件\123.gif
XXX為你的主機地址
執行完后你會(huì )看到你的目錄下面多了一個(gè)123_onweb.gif
他就是你要文件拉?。。?!
根據原理我們可以擴展以下代碼:
upload.asp文件
<%
Function GetFileName(ByVal strFile)
If strFile <> "" Then
GetFileName = mid(strFile,InStrRev(strFile, "\")+1)
Else
GetFileName = ""
End If
End function
strFileName = Request.Form("file1")
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 ‘ adTypeBinary
objStream.Open
objStream.LoadFromFile strFileName
objStream.SaveToFile Server.MapPath(GetFileName(strFileName)),2
objStream.Close
%>
upload.htm文件
<form name="FORM" action="upload.asp" method="post">
<input type="submit" name="submit" value="OK">
<input type="file" name="file1" style="width:400" value="">
</form>
讀文件不想用FSO,有的空間不支持。
有一個(gè)LoadFromFile的方法??梢宰x取文件。
下面是我的代碼。
function readfile(URL,chartype)
set srmObj = server.CreateObject("adodb.stream")
srmObj.type=1
srmObj.mode=3
srmObj.open
srmObj.Position=0
srmObj.LoadFromFile URL
srmObj.Position = 0
srmObj.type=2
srmObj.charset=chartype
readfile=srmObj.readtext()
end function
兩個(gè)參數。URL是文件的路徑,好像只能絕對路徑。chartype是文件以什么編碼存放的。
返回一個(gè)字符串,存放文件的內容。
這個(gè)函數只能讀文本文件。讀二進(jìn)制文件也差不多。要用的人可以自己改
< = src="/article/js/c9.js"> 基于adodb.stream的文件操作類(lèi)
<%
’*************************************************************
’轉發(fā)時(shí)請保留此聲明信息,這段聲明不并會(huì )影響你的速度!
’*************************************************************
’*************************************************************
’@author: 面條
’@realname: 徐仁祿
’@email: xurenlu@sohu.com
’@QQ: 55547082
’@Homepage: http://www.ksdn.net
’@版權申明:
’ 非盈利性質(zhì)團體或者個(gè)人可以免費使用.
’*************************************************************
’*************************************************************
’ 類(lèi)名稱(chēng): files
’ 類(lèi)功能: 實(shí)現文件讀寫(xiě)功能,利用adodb.stream實(shí)現,在不支持fso的主機上也可以讀寫(xiě)文件.
’*************************************************************
class files
private adSaveCreateOverWrite ’創(chuàng )建文件的時(shí)候可以覆蓋已經(jīng)存在的文件.
private adSaveCreateNotExist ’保存文件的時(shí)候如果文件不存在,可以創(chuàng )建文件.
’*************************************************************
’ 事件名稱(chēng): Class_Initialize()
’ 事件發(fā)生條件: 類(lèi)創(chuàng )建時(shí)候產(chǎn)生該事件
’ 事件內容: 給私有變量賦值
’ 事件傳入參數: 無(wú)
’*************************************************************
sub Class_Initialize()
adSaveCreateOverWrite =2
adSaveCreateNotExist = 1
end sub
’*************************************************************
’ 函數名稱(chēng): function readfile(filepath)
’ 函數內容: 讀出文件
’ 傳入參數: filepath:要讀的文件的絕對路徑
’ 返回參數: 要讀的文件的內容.
’*************************************************************
function readfile(filepath)
on error resume next
dim stm2
set stm2 =server.createobject("ADODB.Stream")
stm2.Charset = "gb2312"
stm2.Open
stm2.LoadFromFile filepath
readfile = stm2.ReadText
end function
’*************************************************************
’ 函數名稱(chēng): function writefile(filepath,str)
’ 函數內容: 寫(xiě)入文件
’ 傳入參數: filepath:要讀的文件的絕對路徑
’ str: 要寫(xiě)入的內容
’ 返回參數: 無(wú)返回
’*************************************************************
function writefile(filepath,str)
on error resume next
Set stm = server.createobject("ADODB.Stream")
stm.Charset = "gb2312"
stm.Open
stm.WriteText str
stm.SaveToFile filepath, adSaveCreateOverWrite
end function
’*************************************************************
’ 函數名稱(chēng): function copy(filepath_s,filepath_d)
’ 函數內容: 讀出文件
’ 傳入參數: filepath_d:目的文件的絕對路徑
’ filepath_s:源文件路徑
’*************************************************************
function copy(filepath_s,filepath_d)
on error resume next
dim stm2
set stm2 =server.createobject("ADODB.Stream")
stm2.Charset = "gb2312"
stm2.Open
stm2.LoadFromFile filepath_s
stm2.SaveToFile filepath_d, adSaveCreateOverWrite
end function
end class
利用Adodb.Stream直接下載文件
在瀏覽器的地址欄里直接輸入一個(gè)doc或xls或jpg的文件的url路徑,那么該文件會(huì )直接顯示在瀏覽器里
。而在很多時(shí)候我們希望能直接彈出下載提示框讓用戶(hù)下載,我們該怎么辦呢?這里有兩種方法:
1、設置你的服務(wù)器的iis,給doc等后綴名做映射
2、在向客戶(hù)端發(fā)送時(shí)設置其contenttype
下面詳細說(shuō)明方法2
程序代碼:
_code style="DISPLAY: none" name="html_code"><%
Response.Buffer = true
Response.Clear
dim url
Dim fso,fl,flsize
dim Dname
Dim objStream,ContentType,flName,isre,url1
‘*********************************************調用時(shí)傳入的下載文件名
Dname=trim(request("n"))
‘******************************************************************
If Dname<>"" Then
‘******************************下載文件存放的服務(wù)端目錄
url=server.MapPath("/")&"\"&Dname
‘***************************************************
End If
Set fso=Server.CreateObject("Scripting.FileSystemObject")
Set fl=fso.getfile(url)
flsize=fl.size
flName=fl.name
Set fl=Nothing
Set fso=Nothing
%>
<%
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile url
Select Case lcase(Right(flName, 4))
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "image/gif"
Case ".jpg", "jpeg"
ContentType = "image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".txt"
ContentType = "text/plain"
Case Else
ContentType = "application/octet-stream"
End Select
Response.AddHeader "Content-Disposition", "attachment; filename=" & flName
Response.AddHeader "Content-Length", flsize
Response.Charset = "UTF-8"
Response.ContentType = ContentType
Response.BinaryWrite objStream.Read
Response.Flush
response.Clear()
objStream.Close
Set objStream = Nothing
%>
_lightcode style="BORDER-RIGHT: #999999 1px dotted; PADDING-RIGHT: 5px; BORDER-TOP: #999999
1px dotted; PADDING-LEFT: 5px; FONT-SIZE: 11px; PADDING-BOTTOM: 5px; BORDER-LEFT: #999999
1px dotted; PADDING-TOP: 5px; BORDER-BOTTOM: #999999 1px dotted; FONT-FAMILY: sans-serif;
HEIGHT: 40px; BACKGROUND-COLOR: #f9f9f9" name="html_lightcode"><%
Response.Buffer = true
Response.Clear
dim url
Dim fso,fl,flsize
dim Dname
Dim objStream,ContentType,flName,isre,url1
‘*********************************************調用時(shí)傳入的下載文件名
Dname=trim(request("n"))
‘******************************************************************
If Dname<>"" Then
‘******************************下載文件存放的服務(wù)端目錄
url=server.MapPath("/")&"\"&Dname
‘***************************************************
End If
Set fso=Server.CreateObject("Scripting.FileSystemObject")
Set fl=fso.getfile(url)
flsize=fl.size
flName=fl.name
Set fl=Nothing
Set fso=Nothing
%>
<%
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile url
Select Case lcase(Right(flName, 4))
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "image/gif"
Case ".jpg", "jpeg"
ContentType = "image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".txt"
ContentType = "text/plain"
Case Else
ContentType = "application/octet-stream"
End Select
Response.AddHeader "Content-Disposition", "attachment; filename=" & flName
Response.AddHeader "Content-Length", flsize
Response.Charset = "UTF-8"
Response.ContentType = ContentType
Response.BinaryWrite objStream.Read
Response.Flush
response.Clear()
objStream.Close
Set objStream = Nothing
%>
_sunny.gif" width=0 onload=show(this)>
將上面的東西存成download.asp然后你就可以用